public void onFailure(捕获可抛出)
AsyncCallback
接口的实现。Public Response to Response(E throwable)
ExceptionMapper
接口的实现。以上两种方法都接收throwable
的实例。通常,我见过开发人员使用一个简单的“if/else if”块来区分处理逻辑:
// As specified by the AsyncCallback class of the GWT framework
public void onFailure(Throwable caught) {
if (caught instanceof AnException) {
// handle AnException
} else if (caught instanceof AnotherException) {
// handle AnotherException
} else if (caught instanceof YetAnotherException) {
// handle YetAnotherException
} else if (caught instanceof ...) {
// and so on...
}
}
由于许多原因,我不喜欢“if/else if”块,所以我想出了以下“模式”,它将“if/else if”块转换为“try/catch”块,就像它是“switch”块一样:
public void onFailure(Throwable caught) {
try {
throw caught;
} catch(AnException e1) {
// handle AnException
} catch(AnotherException e2) {
// handle AnotherException
} catch(YetAnotherException e3) {
// handle YetAnotherException
} catch(...) {
// and so on...
}
}
我的问题是:在性能、最佳实践、代码可读性、一般安全性或其他我没有考虑到或注意到的东西方面,使用这种方法有没有缺点?
在正常情况下使用异常来指导程序流是一种代码气味,但这并不是您在这里真正要做的。我认为你可以逃脱惩罚有几个原因:
>
我们已经基于各种原因捕获和重新抛出异常(例如,“捕获、采取某些操作、传播”)。这在意图上有点不同,但在成本上并不差。
您已经承担了至少一次引发此异常的代价。你可能会因为它的原因被抛出、捕获、包装或重新抛出而付出代价。填充堆栈痕迹的费用已经支付。再次重新引发已经填充的异常不会增加复杂度。
问题内容: 我以前没有听说过,但是我对Python还是比较陌生。异常处理意味着动态调用和静态返回,而语句是静态调用,静态返回。 如何进行检查是好是坏,似乎正好相反。谁可以给我解释一下这个? 问题答案: 您可能会发现这篇文章很有帮助: 尝试/除Python以外的性能:简单测试 ,Patrick Altman进行了一些简单的测试,以了解在各种条件下进行条件检查(在这种情况下特定于字典键)的性能(仅针对
本文向大家介绍关于ThinkPHP中的异常处理详解,包括了关于ThinkPHP中的异常处理详解的使用技巧和注意事项,需要的朋友参考一下 什么是异常 从更加广泛的角度来看,异常包含两个方面,一方面是程序执行时由于语法、运行时错误等导致的异常,一方面时没有给予正确的反馈,如客户端要查询某个产品,没有查询到,我认为这也属于异常的一种。 第一种异常TP框架本身会在页面中输出错误信息,但是第二种异常则一般不
本文向大家介绍关于.NET异常处理的思考总结,包括了关于.NET异常处理的思考总结的使用技巧和注意事项,需要的朋友参考一下 年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静的看着大佬们发表心情。 以上的废话说的够多了,这里就不再废话了,还是切入正题吧
我想在Spring中处理某些异常并将REST响应包装成另一种对象格式。 因此,我想到了使用过滤器并检查响应状态代码的想法,例如,如果是400,则意味着请求不正确,因此我可以将响应包装为所需的JSON格式,下面是代码示例: 将特定异常的响应封装在过滤器中是一种好方法吗?这种情况的缺点是什么?
我愿意使用FaceTracker示例这个,即在项目中添加emgu.cv.world dll然后它显示我。 无法加载模块。
问题内容: 异常处理中的块究竟执行什么功能? 问题答案: 它包含应始终执行的代码,无论是否发生异常。 例如,如果您打开了一个文件,则应在块中将其关闭,以确保始终关闭该文件。如果在块中将其关闭,则较早的异常将导致执行直接跳到该块并跳过关闭文件。 有关更多详细信息,请参见Java教程。