C#检查异常是否在指定异常列表中的更优雅的方法?
我需要检查异常是否在指定的异常列表中,当前我的代码如下所示:C#检查异常是否在指定异常列表中的更优雅的方法?,c#,exception-handling,C#,Exception Handling,我需要检查异常是否在指定的异常列表中,当前我的代码如下所示: catch (Exception ex) { if ( (ex is Exception1) || (ex is Exception2) || (ex is Exception3) || (ex is Exception4) || (ex is Exception5) ) { //do something; } } 正如您所看到的,语法不是很优雅。有没有更好/更简洁的方法用C#编写这种类型的表达式 编辑-我正在寻
catch (Exception ex) {
if ( (ex is Exception1) || (ex is Exception2) || (ex is Exception3) || (ex is Exception4) || (ex is Exception5) ) {
//do something;
}
}
正如您所看到的,语法不是很优雅。有没有更好/更简洁的方法用C#编写这种类型的表达式
编辑-我正在寻找一些更好的内置语法来将异常视为类型,这样也许我可以构建这些异常的列表,并使用类似“如果列表对象包含此ex”的内容。无论如何,我认为我现在可以忍受当前代码。我认为您不应该使用此解决方案。最好在块中捕获每个异常,如下所示:
catch (Exception1 ex) {
}
catch (Exception2 ex) {
}
虽然不是很“漂亮”,但很管用。。如果遇到异常1或异常2中的任何一个,则将执行
//do something
。如果命中另一个异常(由常规的异常
表示),则该方法将返回,并且不会执行任何操作(它不会执行//执行某些操作
)。定义“优雅”吗?没有一个内置的语法可以做到这一点。我能想到的唯一其他方法是类型列表和循环或Linq查询,在我看来,这不太优雅。您应该拥有所有这些异常的干净继承模型,然后捕获所有感兴趣的异常的正确父项。检查这个问题;我们找错树了吗?我的意思是,为什么你需要区分所有这些例外?通常,如果确实需要,只需记录异常信息并采取安全措施退出代码路径。我希望您不是在使用异常驱动代码流。相关:如何对照类型列表检查对象的类型:
public void test()
{
try
{
// do something something
return;
}
catch (Exception1) {}
catch (Exception2) {}
catch (Exception){
return;
}
//do something;
}