我想知道什么是异常实例情况:
try {
// some risky actions
} catch (Exception e) {
System.out.println("Get instance name there");
}
Run Code Online (Sandbox Code Playgroud)
怎么做到这一点?
Abh*_*ale 49
干得好:
try {
throw new ArithmeticException();
} catch (Exception e) {
System.out.println( e.getClass().getCanonicalName());
}
Run Code Online (Sandbox Code Playgroud)
输出:
java.lang.ArithmeticException
Run Code Online (Sandbox Code Playgroud)
异常的类型显示为以下输出的一部分:
e.printStackTrace();
Run Code Online (Sandbox Code Playgroud)
要以编程方式获取它,可以使用:
String exceptionClassName = e.getClass().getName();
Run Code Online (Sandbox Code Playgroud)
根据catch块中的异常子类型进行逻辑处理的形式很差。Sonar会将其标记为违反代码(鱿鱼S1193)。
相反,您应该添加多个catch块来捕获不同类型的异常:
try {
// some risky actions
} catch (java.io.IOException e) {
e.printStackTrace();
}
catch (java.lang.IllegalArgumentException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
从Java 7开始,您还可以执行多次捕获:
} catch (java.io.IOException | java.lang.IllegalArgumentException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
多重捕获的好处在于,您可以在一个捕获块中处理多种异常类型,而不必还原到一个公共的超类(如java.lang.Exception
),该类将包含许多您不想处理的异常类型。
归档时间: |
|
查看次数: |
41569 次 |
最近记录: |