这是我的情景。 我有10个方法的类,这些方法是原子的,最多只有10行代码。
所以我在思考,而不是处理每个函数中的异常,是否有可能创建一个委托(?不确定这里是否正确的单词)
所谓的包装函数将执行这些原子函数并处理它们的异常,从而允许我集中处理异常处理。
使用delegate或Func在C#中是否可以实现,或者可能有另一种集中错误处理的方法,我可能错过了?
提前致谢
答案 0 :(得分:1)
是的,有这样的代表
private delegate MyReturnType MyDelegate(params Object[] a);
但它不是类型安全的。
答案 1 :(得分:1)
我不确定这是否对您有用,但您可以使用“中间洞”模式或构建抽象类。
我试图做类似的事情,我希望每次调用给定的方法时都会发生某些Pre和Post条件。以同样的方式,您可以将Exception逻辑放在那里,而不是Pre和Post条件。看看这个post。
希望它有所帮助。
答案 2 :(得分:1)
是的,这是一个代码示例
using System;
namespace ConsoleApp
{
class Example {
public void Run() {
catchy(crashA); // Calling defined functions
catchy(crashB);
catchy(()=> {
throw new ArgumentException("Anonymous function...");
});
}
void crashA() {
//...
throw new ArgumentException("another error");
}
void crashB() {
//...
throw new ArgumentException("another error");
}
void catchy(Action action) {
try {
action();
} catch (Exception ex) {
Console.WriteLine(ex);
// do something
}
}
}
class MainClass
{
public static void Main (string[] args)
{
new Example().Run();
Console.ReadLine();
Console.WriteLine ("Hello World!");
}
}
}