java异常处理规范_java-异常处理标准建议

我认为电子邮件示例是检查异常的最佳防御方法.您可能会出错并且是暂时的,因此存在已检查的异常会让您考虑一下.如果一切都是运行时异常,则您的应用程序会因为一些琐碎的原因而崩溃,没人会考虑.

无论如何,如果对于您的项目,一般的答案是将其放在顶部,那么包装在运行时异常中是完全有效的.需要考虑的几件事:

坚持异常链接.不执行此操作的唯一原因是,如果您要序列化异常,那么对于某些包含不可序列化成员的异常,事情可能会变得很有趣.事实并非如此,因此请勿吞下异常.如果需要,请使用initCause.这是我们项目中的一些辅助方法:

public static T initCause(T newException, Throwable cause) {

return (T) newException.initCause(cause);

}

这可以帮助人们避免强制转换例外.

我更喜欢避免不必要的RuntimeException和Error Throwables链接,当方法上有许多不同的Checked Exceptions并且开发人员只是捕获E??xception时,不可避免地发生这种情况,因此我建议使用静态方法来执行以下操作:

public static void throwRuntimeExceptionFromThrowable(Throwable e) {

if (e == null) {

return;

} else if (e instanceof RuntimeException) {

throw (RuntimeException) e;

} else if (e instanceof Error) {

throw (Error) e;

} else {

throw new RuntimeException(e.getMessage(), e);

}

}

有两个选项.一种方法是使它无效(如该代码所做的那样),这使调用者永远不会忘记抛出结果.不利的一面是,如果您有这样的事情:

public Object someMethod() {

try {

return getTheObject();

} catch (Exception e) {

throwRuntimeExceptionFromThrowable(e);

}

}

编译器不会喜欢您.您必须在捕获之后返回,并在尝试之前声明一个变量.

另一个选择是将异常作为RuntimeException返回(仅抛出Error),并由调用方进行抛出.编译器更快乐,但是调用者可能会忘记这样做,并且在没有抛出任何方法的情况下调用该方法,然后吞没了异常.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值