【发布时间】:2016-01-14 07:57:59
【问题描述】:
有一个用于捕获异常的短方法的类是不是很好?
class ContractUtils{
public static String getCode(Contract contract) throws MyException{
try{
return contract.getInfo().getCode(); //throws ContractException and LogicException
}catch(Exception e){
throw new MyException("error during code reading:"+e.getMessage, e);
}
}
//other methods like above...
}
【问题讨论】:
-
别忘了在你的方法签名中写上“throws”
-
嗯嗯。一旦您可以有效地响应异常,就应该尽快处理它们。通常,这不会出现在某些随机实用程序方法中,而是更低(在
contract.getInfo().getCode()本身中)或更高(在您可以生成有用错误消息的应用程序级别)。 -
如果
contract.getInfo().getCode()抛出例如NullPointerException还是ArithmeticException?在这些情况下,您肯定不想抓住并抛出MyException吗? -
不,只需将您的 try/catch 直接放在您的真实方法中(您有联系人并想获取它的代码)。最好用 try/catch 包围“contract.getCode()”,而不是使用“getCode(Contract contract)”静态方法。
-
用例场景是这样的:我正在使用外部参与者给我的 Contract 类,这些类为每个 get 方法抛出两种类型的自定义异常,我的想法是有一个类管理这些异常并将有用的错误消息放入新的自定义异常中。在更高级别,我将捕获每个异常并使用以下模式记录消息:“合同编辑期间出错:”+e.getMessage。所以我期望的结果是这样的:“合约编辑期间出错:代码读取期间出错:值为空”
标签: java methods try-catch short