C# 处理整个类时出错

C# 处理整个类时出错,c#,winforms,error-handling,try-catch,C#,Winforms,Error Handling,Try Catch,我继承了一个Winforms程序,它使用一些第三方软件,我看不到其源代码。在调用此代码中的方法时,希望它连接到软件检查的读取器。不幸的是,连接似乎不时中断,而隐藏的函数会导致程序无声地失败。有没有一种方法可以在不使用try-catch的情况下处理对此类方法的每次调用 该软件看起来像这样,使用Reader类,我们可以跨多个模块访问同一个Reader: public class Reader { private ThirdPartyReader thirdPartyReader; pu

我继承了一个Winforms程序,它使用一些第三方软件,我看不到其源代码。在调用此代码中的方法时,希望它连接到软件检查的读取器。不幸的是,连接似乎不时中断,而隐藏的函数会导致程序无声地失败。有没有一种方法可以在不使用try-catch的情况下处理对此类方法的每次调用

该软件看起来像这样,使用Reader类,我们可以跨多个模块访问同一个Reader:

public class Reader
{
   private ThirdPartyReader thirdPartyReader;

   public ObjectReport QueryObjects()
   {
      return thirdPartyReader.QueryObjects();
   }

   public Settings QuerySettings()
   {
      return thirdPartyReader.QuerySettings();
   }
}

这其实并没有什么不同,因为您仍然需要执行reader.Try(),而不仅仅是调用方法,但这是一种非常简短的语法。

当您说:“在此代码中调用方法时”,我假设您使用的是来自第三方的DLL,若是这样的话,你们可以使用IL反汇编程序来查看里面发生了什么——当然这并不能解决你们的整体问题。我不确定这是否与这个问题有关。基本上,到目前为止,我考虑的是要么尝试捕获对这个类的调用,要么使用内置的try-catch构建包装器。我希望有一种方法我没听说过。你想忽略例外情况吗?如果你吸收了每一个异常,你怎么知道出了什么问题?@SimonMcKenzie这是一个我们知道的硬件问题。我只需要在它崩溃之前记录并显示一条错误消息,如果有更简单的方法,我不想加入一堆try-catch。谢谢你的回答。这和我的包装非常相似。如果这是最好的解决方案,我会把它标记为答案。
    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");