- Checked vs. Unchecked
Checked 异常必须明确地被捕获在一个方法中,或者在方法的throws子句中声明。 Unchecked的异常是由无法解决的问题引起的,比如除以零,空指针等。
Checked 异常非常重要,因为你希望使用API的其他开发人员知道如何处理异常。
- 异常管理的最佳做法:
如果一个异常可以被正确处理,那么它应该被捕获,否则,它应该被抛出。
- 为什么在try中定义的变量不能用于catch或者finally?
在以下代码中,try块中声明的字符串不能用于catch子句。代码无法通过编译。
try {
File file = new File("path");
FileInputStream fis = new FileInputStream(file);
String s = "inside";//这儿定义的s,是不能通过编译的
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println(s);
}
原因是你不知道在try块中的哪个位置会抛出异常。很有可能在对象被声明之前抛出异常。
- 为什么Double.parseDouble(null)和Integer.parseInt(null)抛出不同的异常?
它们确实抛出了不同的异常,这是JDK的问题。
它们是由不同的开发人员开发的,所以不值得太多的思考。
Integer.parseInt(null);
// throws java.lang.NumberFormatException: null
Double.parseDouble(null);
// throws java.lang.NullPointerException
- Java中常用的运行时异常
当条件不满足时,可以在if语句中使用如下代码:
if (obj == null) {
throw new IllegalArgumentException("obj can not be null");
原地址http://www.programcreek.com/2013/10/top-10-questions-about-java-exceptions/