说我有以下
try{ //something }catch(Exception generic){ //catch all }catch(SpecificException se){ //catch specific exception only }
当遇到SpecificException时会发生什么?它是否首先将其作为一个通用异常来捕获,然后捕获specificexception?
或者它只捕获SpecificException,而忽略通用异常.
我不希望捕获泛型和诡计异常.
解决方法
不,所有的异常都会被第一个块所捕获.第二个将永远不会达到(编译器识别,导致由于不可达代码导致的错误).如果你想特别处理SpecificException,你必须这样做:
}catch(SpecificException se){ //catch specific exception only }catch(Exception generic){ //catch all }
那么SpecificException将被第一个块捕获,而所有其他的都被第二个.