错误处理整个类
本文关键字:处理 错误 | 更新日期: 2023-09-27 18:07:11
我继承了一个使用第三方软件的Winforms程序,我看不到源代码。当调用这段代码中的方法时,它被期望连接到一个阅读器,软件会检查这个阅读器。不幸的是,连接似乎不时中断,隐藏的函数导致程序无声地失败。是否有一种方法来处理每个调用这个类的方法,而不使用一个try catch上每一个?
软件看起来是这样的,使用Reader类,我们可以跨多个模块访问相同的阅读器:
public class Reader
{
private ThirdPartyReader thirdPartyReader;
public ObjectReport QueryObjects()
{
return thirdPartyReader.QueryObjects();
}
public Settings QuerySettings()
{
return thirdPartyReader.QuerySettings();
}
}
public static class Extensions
{
public static TResult Try<TObject, TResult>(this TObject source, Func<TObject, TResult> method, string message = null)
{
try
{
return method(source);
}
catch (Exception e)
{
//Some Logging or whatever, optionally using the message parameter;
return default(TResult);
}
}
}
用法:
var reader = new ThirdPartyReader();
var objects = reader.Try(x => x.QueryObjects());
var settings = reader.Try(x => x.QuerySettings(), "Error Reading Settings");
实际上并没有什么不同,因为您仍然需要执行reader.Try(),而不仅仅是调用方法,但它是一个非常简短的语法。