我继承了一个使用某些 3rd 方软件的 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(),而不仅仅是调用方法,但它是一种非常缩写的语法。
关于c# - 错误处理整个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15773004/