自定义异常处理程序C#

时间:2016-12-01 08:51:00

标签: c# wpf

我在C#中制作了自定义异常处理程序我希望在发生任何异常时为用户显示可读消息。

我已经尝试指定等待它的Hresult值的异常,但我有一个我还没有看到的问题,它显示了Hresult值和指定的异常

 class UiException : Exception
{
    public string Errormessage { get; set; }
    public UiException(Exception e)
  : base()
    {
        string exName = e.Source;
        int errorNumber =  e.HResult;
        if (e.HResult == -2146233080)
            Errormessage = "Index was outside the bounds of the array.";

 }     
}

1 个答案:

答案 0 :(得分:0)

您不想使用HRESULT进行异常识别。 HRESULT主要用于COM互操作,在.NET中几乎没用。我建议如下:

  1. 使用基本异常的类型来确定自定义错误消息。你留在.NET中,它更灵活。灵活性方面的主要优点是,您可以轻松地涵盖从其他异常派生的异常,而无需定义回退。此外,通过 ReactDOM.render(( <Router history={browserHistory} routes={ [<Route path = '/' component={Login}> <Route path="main" component={main}> <IndexRoute component={Home} /> <Route path = "/Accession" component = {Home} /> <Route path="/contact" component={Contact}/> </Route> </Route>]} /> ), document.getElementById('App')); 广告,您可以轻松地从例外中提取更多信息(例如as的{​​{1}})。
  2. 使您的基本异常成为内部异常。自 time .NET出现以来,存在内部异常,因此被广泛支持,例如用于记录或调试。保持错误的来源也有利于错误分析和一般最佳实践。
  3. 您的ParameterName财产绝对不需要。有ArgumentException属性,适合您的目的,并且(如内部异常)得到广泛支持。
  4. 因此,您的自定义异常应该更像这样:

    Errormessage