可以为单个try语句执行多个catch块吗?我们如何处理catch块?我们可以创建try而不使用catch块吗?
答案 0 :(得分:14)
可以有多个catch块(如已在其他答案中所述),但只执行首先匹配异常类型的块。这意味着您需要正确订购catch块。例如:
try
{
}
catch (Exception exp1)
{
// Block 1
}
catch (IOException exp2)
{
// Block 2
}
块2永远不会被执行,因为块1捕获每个异常(所有异常类都派生自Exception
)。
try
{
}
catch (IOException exp1)
{
// Block 1
}
catch (Exception exp2)
{
// Block 2
}
在此示例中,仅当异常不是IOException
或从IOException
派生时,才会执行块2。如果抛出IOException
,则只执行块1,而块2不执行。
答案 1 :(得分:3)
答案 2 :(得分:1)
从技术上讲,你只能打一个捕获但是你说:
可以为单个try语句执行多个catch块
正在执行关键字。所以,你可以尝试:
catch (Exception ex)
{
if (ex is MyException1||
ex is MyException2)
{
//do stuff
}
else
{
throw;
}
}
答案 3 :(得分:0)
是的,您可以使用try语句拥有多个catch块。首先捕获特定的异常,然后在最后一个块中,您可以捕获基础Exception
。只有一个catch块将处理您的异常。
你可以尝试阻止没有catch块。尝试/终于会做。
try
{
Console.Write("test");
}
catch (IOException ex)
{
}
catch (ArithmeticException ex)
{
}
catch (Exception ex)
{
}
尝试没有捕获
try
{
}
finally
{
}
答案 4 :(得分:0)
1是it's possible to have multiple catch
,一个特定异常的捕获
样品
try
{
...
}
catch (FormatException)
{
....
}
catch (OverflowException)
{
...
}
2您可以在没有try
catch
分析
try
{
...
}
Finally
{
.....
}
答案 5 :(得分:0)
关于问题的第二部分,你可以做任何一个
try
{
stuff...
}
catch(Exception ex){}
或
try
{
stuff...
}
finally{}
,但你不能单独尝试。
答案 6 :(得分:0)
只会执行一个catch
块,并且catch
与被抛出的Exception
的类型非常匹配。
你自己不能拥有try
。您需要try catch (one or more catch block)
或try finally
或try catch finally
答案 7 :(得分:0)
对于单个try..catch语句,您可以拥有任意数量的catch
块。
但请记住一件事,那就是你的
catch (Exception ex)
{
...
}
应该是最后一个catch块,因为所有异常都继承了Exception类。