有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中处理一长串异常

我有一个Web服务器,它在服务请求时捕获一长串异常

目前,我们有一个很长的异常列表,我们处理许多catch块

有没有处理这种事情的最佳实践

我在想类似的事情

} catch (Exception e) {
   return handleException(e);
}

Response handleException(Exception e) {
    if (e instanceof DomainException) {
       //DO SOMETHING
    } else if (e instanceof NullPointerException) {
         .
         .
         .

我不确定这是不是更干净。有什么更好的处理方法的建议吗


共 (2) 个答案

  1. # 1 楼答案

    Juned提到的Java7特性非常有用,但我很好奇为什么您首先需要这么多catch块。无论是Java7还是其他版本,都要利用该语言的异常功能

    首先,确保您没有不必要地为现有异常(如IllegalArgumentException)所解决的情况发明自己的DomainException

    其次,请记住检查异常和未检查异常之间的区别。选中的异常从RuntimeException的Exception类层次结构的另一端派生。常见的检查异常是IOExceptionSQLException,必须进行处理。任何类似于NullPointerException的RuntimeException子类都是未经检查的异常,不必捕获或抛出任何异常

    通常,对于可恢复的问题(客户机知道会发生什么,可以优雅地处理问题并继续)使用选中的异常,对于灾难性问题(如无法连接到数据库)使用未选中的异常

    如果你能克服所有AOP的东西,this是一个关于如何有效地使用检查和未检查异常的讨论。我认为这里描述的断层屏障的概念将有助于大大减少捕捉块。不再需要像在示例中那样捕获NullPointerException

  2. # 2 楼答案

    如果您使用的是Java 7,那么您可以在catch块中使用|合并异常。例如:

    catch (IOException|SQLException ex)