catch(TimeoutException e)
{
//something here
}
catch(SomeOtherException e)
{
//something here
}
catch(NullPointerException e)
{
//something here
}
catch(Exception excep)
{
//something here
}
我的问题是,如果存在NullPointerException,它将被nullpointerexception catch块捕获。它是否也会被异常捕获块捕获?我可以使用excep变量来获取异常类型吗?
答案 0 :(得分:3)
不,因为在catch (Exception excep)
区块之上,您有一个专门捕获NullPointerException
的区块。
多个catch块*永远不会捕获异常。
如果删除catch (NullPointerException e)
阻止,那么catch (Exception excep)
阻止 也将<{1}}捕获(因为NullPointerException
是NullPointerException
的子类1}})。在这种情况下,您可以使用Exception
变量来检查异常的类型。然而,这将是不好的做法 - 为特定的异常类型添加一个catch块更好,而不是测试异常变量的类型。
*:除非在excep
区块内,你重新抛出异常,正如Juan Mendes在评论中提到的那样。