C# 更优雅的方法来检查异常是否在指定异常列表中?
C# More elegant way to check if an exception is within a list of specified exceptions?
我需要检查异常是否在指定异常列表中,目前我的代码如下所示:
catch (Exception ex) {
if ( (ex is Exception1) || (ex is Exception2) || (ex is Exception3) || (ex is Exception4) || (ex is Exception5) ) {
//do something;
}
}
如您所见,语法不是很优雅。在 C# 中是否有 better/cleaner 编写此类表达式的方法?
编辑 - 我一直在寻找一些更好的内置语法来将异常视为类型,所以也许我可以构建这些异常的列表,如果列表对象包含这个 ex,就使用类似的东西。不管怎样,我想我现在可以忍受现在的代码。
我认为你不应该做这个解决方案。最好在一个块中捕获每个异常,如下所示:
catch (Exception1 ex) {
}
catch (Exception2 ex) {
}
public void test()
{
try
{
// do something something
return;
}
catch (Exception1) {}
catch (Exception2) {}
catch (Exception){
return;
}
//do something;
}
不是很 'beautiful' 但它有效.. 如果遇到 Exception1 或 Exception2 中的任何一个,那么 //do something
将执行。如果命中另一个异常(由一般 Exception
表示),则该方法将 return 并且不会执行任何操作(它不会执行 //do something
)。
我需要检查异常是否在指定异常列表中,目前我的代码如下所示:
catch (Exception ex) {
if ( (ex is Exception1) || (ex is Exception2) || (ex is Exception3) || (ex is Exception4) || (ex is Exception5) ) {
//do something;
}
}
如您所见,语法不是很优雅。在 C# 中是否有 better/cleaner 编写此类表达式的方法?
编辑 - 我一直在寻找一些更好的内置语法来将异常视为类型,所以也许我可以构建这些异常的列表,如果列表对象包含这个 ex,就使用类似的东西。不管怎样,我想我现在可以忍受现在的代码。
我认为你不应该做这个解决方案。最好在一个块中捕获每个异常,如下所示:
catch (Exception1 ex) {
}
catch (Exception2 ex) {
}
public void test()
{
try
{
// do something something
return;
}
catch (Exception1) {}
catch (Exception2) {}
catch (Exception){
return;
}
//do something;
}
不是很 'beautiful' 但它有效.. 如果遇到 Exception1 或 Exception2 中的任何一个,那么 //do something
将执行。如果命中另一个异常(由一般 Exception
表示),则该方法将 return 并且不会执行任何操作(它不会执行 //do something
)。