错误处理整个类

本文关键字:处理 错误 | 更新日期: 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(),而不仅仅是调用方法,但它是一个非常简短的语法。