首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何有效地处理任何类型的异常?

如何有效地处理任何类型的异常?
EN

Stack Overflow用户
提问于 2010-12-10 16:12:54
回答 8查看 467关注 0票数 1

异常处理是使应用程序免于崩溃的最有用的机制。即使我们中的大多数人都遵循异常处理机制。即使是我也看到许多人仍然得到了例外。我们是否以一种理应如此的方式处理异常?我的问题是,处理任何类型的异常的最佳方法是什么?

我想说清楚几件事。当我说处理异常时,这不仅仅意味着捕获适当的异常消息并显示或记录它。相反,它假定要处理异常纠正操作。

让我们考虑这段代码:

代码语言:javascript
运行
复制
try {
  someMethod1();
} catch (MyException e) {
  System.out.println(e.getMessage());
} catch (YourException e) {
  System.out.println(e.getMessage());
}

在上面的代码中,"MyException“和"YourException”可能无法捕获所有类型的异常。但是,我们当然可以使用"java.lang.Exception“。我们如何识别正确的异常类型?如何处理这个异常呢?尤其是在使用外部库时。

如有需要,请提供更多详细信息。

谢谢

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-12-10 16:18:26

您不希望捕获运行时异常。原因是,您只是在那里隐藏了一个bug。相反,让应用程序失败并修复它。回答你的问题,如果你捕捉Throwable,你基本上会吃掉任何类型的异常。

经验法则:只捕获应用程序异常。

票数 7
EN

Stack Overflow用户

发布于 2010-12-10 16:19:16

我不知道我是否真的理解了您的问题的意思,但是,您可以在某个代码块中捕获所需的任意数量的expceptions:

代码语言:javascript
运行
复制
try {
  someMethod1();
} catch (MyException e) {
  System.out.println(e.getMessage());
} catch (YourException e) {
  System.out.println(e.getMessage());
} catch (IOException e) {
   //handle
} catch (SQLException e) {
   //handle
}

而且,根据异常层次结构,当您捕获异常时,还会捕获此异常的每个子类型,因此,当您需要捕获每个意外错误情况时,可以为java.lang.Exception添加一个catch (在最后一条catch语句中)

代码语言:javascript
运行
复制
try {
  someMethod1();
} catch (MyException e) {
  System.out.println(e.getMessage());
} catch (YourException e) {
  System.out.println(e.getMessage());
} catch (Exception e) {
   //handle generic unexpected exception
}

您也可以捕获超级接口Throwable,但不推荐这样做,因为唯一的区别是,抛开异常不谈,您也会捕获错误。这些错误是致命的情况,不应该处理,因为它们表示java虚拟机中存在严重的问题,如内存不足、堆栈溢出等。

这些链接对于如何处理java异常很有用:

  • http://download.oracle.com/javase/tutorial/essential/exceptions/index.html
  • http://tutorials.jenkov.com/java-exception-handling/index.html

致以问候。

票数 4
EN

Stack Overflow用户

发布于 2010-12-10 16:31:53

来自Software Engineering Radio播客的人在Error Handling上有两个非常好的插曲。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4406849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档