编写必须一次又一次处理相同异常的代码总是很无聊。
有没有办法不用try/catch写代码,在方法中添加属性来捕获(和处理)可能发生的各种异常?这听起来像 AOP (Postsharp),这是理想的解决方案吗?
所以我想编写一些类来指示在何处/如何记录、重新抛出异常等,并且它们派生自属性和任何基类/接口(interface)。然后重新使用这些并将它们应用于整个代码中的不同方法。这将大大提高一致性。
谢谢
最佳答案
我的建议是编写将委托(delegate)(例如 Func 和 Action)作为参数的方法。代表将代表“try” block 。各个方法将以不同方式处理委托(delegate)中发生的异常。
例子:
OverflowHandler(delegate(){ checked{ x+=200; } });
OverflowHandler 方法将处理 OverflowException 并可能记录并重新抛出其他异常。
以下是 OverflowHandler 方法的示例:
public void OverflowHandler(Action func){
try {
func(); // call the delegate
} catch(Exception e){
if(e is OverflowException){
// handle the overflow exception
} else {
// log exception and rethrow
LogException(e);
throw;
}
}
}
关于c# - 消除重复的 try/catch 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714172/