有人可以解释一下捕捉和捕捉之间的区别吗?Exception
并抓住一个SQLException
?我知道如果你选择打印异常错误,SQLException会打印出更多信息,但是还有其他的吗?
try {
//code
} catch(Exception ex) {
//code
}
And
try {
//code
} catch(SQLException ex) {
//code
}
使用有什么好处和区别Exception
and SQLException
在 catch 块中?
这不是唯一的区别。
捕捉Exception
很危险,因为它也捕获了所有RuntimeException http://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.htmls(因此是未经检查的异常),其中包括诸如NullPointerException
等等,这是明显的程序员错误。不要那样做!
Also, Exception
是一个像任何其他类一样的类,因此您可以对其进行子类化并添加您自己的构造函数/方法。例如,SQLException
has a .getErrorCode() method http://docs.oracle.com/javase/8/docs/api/java/sql/SQLException.html#getErrorCode-- which Exception
不具有。如果你只抓住Exception
,您无法访问此方法。
一般来说,首先捕获“更精确”的异常是最好的。例如,使用新的(Java 7...)文件 API,您可以轻松区分文件系统级别错误和其他 I/O 错误,因为FileSystemException
延伸IOException
:
try {
something();
} catch (FileSystemException e) {
// fs level error
} catch (IOException e) {
// I/O error
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)