Java:捕获特定异常
假设我有以下几点
try{
//something
}catch(Exception generic){
//catch all
}catch(SpecificException se){
//catch specific exception only
}
遇到特定异常时会发生什么?它是否先将其作为一般异常捕获,然后再捕获特定异常
或者它只捕获SpecificException而忽略泛型异常
我不希望通用异常和特定异常都被捕获
你可以在下面搜索框中键入要查询的问题!
假设我有以下几点
try{
//something
}catch(Exception generic){
//catch all
}catch(SpecificException se){
//catch specific exception only
}
遇到特定异常时会发生什么?它是否先将其作为一般异常捕获,然后再捕获特定异常
或者它只捕获SpecificException而忽略泛型异常
我不希望通用异常和特定异常都被捕获
# 1 楼答案
这不会编译。您将被告知无法访问特定的异常块
首先必须有更具体的异常捕获块,然后是常规块
# 2 楼答案
这不会使用eclipse编译器编译:
所以用另一种方式来定义它们。只有特定的一个会被抓到
# 3 楼答案
按顺序尝试catch块,并执行第一个与异常类型匹配的块。由于
Exception
是所有异常类型的超类,因此它将始终在该实例中执行,并且永远不会执行特定的情况。事实上,编译器足够聪明,可以注意到这一点并引发编译错误只需重新排列catch子句
# 4 楼答案
不。所有异常都将被第一个块捕获。第二个将永远无法到达(编译器可以识别,这会导致由于无法访问代码而导致错误)。如果你想特别对待
SpecificException
,你必须反过来:然后
SpecificException
将被第一个块捕获,所有其他块将被第二个块捕获# 5 楼答案
我的建议是捕获SQLException并检查代码
# 6 楼答案
作为补充说明,调用两个catch块的唯一方法是使用嵌套异常