Tho*_*mar 17
可以有多个catch块(如已在其他答案中所述),但只执行首先匹配异常类型的块.这意味着您需要正确订购catch块.例如:
try
{
}
catch (Exception exp1)
{
// Block 1
}
catch (IOException exp2)
{
// Block 2
}
Run Code Online (Sandbox Code Playgroud)
块2永远不会被执行,因为块1捕获每个异常(所有异常类都派生自Exception).
try
{
}
catch (IOException exp1)
{
// Block 1
}
catch (Exception exp2)
{
// Block 2
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,仅当异常不是IOException或从中派生时才会执行块2 IOException.如果IOException抛出a,则只执行块1,而不执行块2.