执行多个catch块

cha*_*har 5 c#

可能重复:
执行多个catch块

可以为单个try语句执行多个catch块吗?我们如何处理catch块?我们可以创建没有catch块的try吗?

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.


Pra*_*thy 4

  • 您可以将多个 catch 块与一个 try 块关联,但只有一个 catch 块可以处理您的异常。
  • 是的,你可以有一个没有 catch 的 try 块,但必须有一个 finally 块