我是Java/OOP的新手,我有兴趣了解这个问题的标准方法.
假设我的Java程序包含以下主要方法:
public static void main(String[] args) { String name = args[1]; Person person = PersonHelper.getPerson(name); }
想象一下,调用getPerson方法(在PersonHelper.java中定义的其他方法和类的帮助下)执行以下操作:
从模板构建URL以从远程服务器获取有关"名称"的数据,例如https://allofthepeople.com/name成为https://allofthepeople.com/Alice
使用此URL将有关Alice的JSON格式数据从服务器读入缓冲区
使用JSON解析器将此数据反序列化为Person对象
返回对象
现在有(至少)三个异常可以在此例程中抛出:
MalformedURLException(例如,如果我传入二进制数据而不是名称)
IOException(例如,如果/ Alice不存在)
JSONParseException(例如,如果服务器的响应不是JSON格式)
假设调用getPerson(在这种情况下为main)的方法需要能够区分这三个异常,应该如何做?我没有看到异常本身是如何返回的,因为赋值Person person = PersonHelper.getPerson(name)
是期望一个Person对象.
继续这样:
public static void main(String[] args) { String name = args[1]; try { Person person = PersonHelper.getPerson(name); } catch(MalformedURLException e) { // Handle exception } catch(IOException e) { // Handle exception } catch(JSONParseException e) { // Handle exception } }
并更改getPerson
方法的签名,以便抛出3个异常,让main
进行处理.
public static getPerson(String name) throws MalformedURLException, IOException, JSONParseException { ... }