Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理来自“的例外情况”;限制性;代码_Java_Exception_Exception Handling - Fatal编程技术网

Java 处理来自“的例外情况”;限制性;代码

Java 处理来自“的例外情况”;限制性;代码,java,exception,exception-handling,Java,Exception,Exception Handling,我最近问了另一个问题,关于在不需要时避免使用样板异常(或者更具体地说,不需要处理的错误,因为如果首先调用错误,应用程序将无法生存)。我决定在大多数情况下支持未经检查的错误,主要是为了易于阅读。在其他情况下,我似乎别无选择,只能使用又大又丑的try-catch块 例如,在一种情况下,我使用ApacheCommons BeanUtilities类MethodUtils来使用内省调用未知类型对象中的方法。在这种情况下,看看我是如何使用一个我无法控制的类的。我是否被迫遵循检查异常原理,每次使用该方法时捕

我最近问了另一个问题,关于在不需要时避免使用样板异常(或者更具体地说,不需要处理的错误,因为如果首先调用错误,应用程序将无法生存)。我决定在大多数情况下支持未经检查的错误,主要是为了易于阅读。在其他情况下,我似乎别无选择,只能使用又大又丑的try-catch块

例如,在一种情况下,我使用ApacheCommons BeanUtilities类MethodUtils来使用内省调用未知类型对象中的方法。在这种情况下,看看我是如何使用一个我无法控制的类的。我是否被迫遵循检查异常原理,每次使用该方法时捕获3个不同的异常?还是有办法解决这个问题

SQL sql = null;
try {
    sql = (SQL) MethodUtils.invokeExactMethod(bean, "getSQL", (Object[])null);
} catch (NoSuchMethodException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
}

复杂的
catch
可读性是非常常见的问题。在Java 7中,它可以采用更可读的形式:

SQL sql = null;
try {
    sql = (SQL) MethodUtils.invokeExactMethod(bean, "getSQL", (Object[])null);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
    e.printStackTrace();
}

除了Mersenne的答案之外,您还可以在catch块中简单地使用这些异常的公共基类:

SQL sql = null;
try {
    sql = (SQL) MethodUtils.invokeExactMethod(bean, "getSQL", (Object[])null);
} catch (Exception e) {
    e.printStackTrace();
}
这将捕获所有三个异常。如果您不打算对不同的异常执行任何特定的度量,那么这是一个合适的解决方案。它适用于所有JDK版本