C# C如何捕获异常

C# C如何捕获异常,c#,C#,我是C编程新手,不了解这个问题 using (WebClient wc = new WebClient()) { try { wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; HtmlResult = wc.UploadString(URI, myParameters); } catch(AuthenticateExep

我是C编程新手,不了解这个问题

using (WebClient wc = new WebClient())
{   
   try
   {
        wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
        HtmlResult = wc.UploadString(URI, myParameters);
    }
    catch(AuthenticateExeption a)
    {
        throw new AuthenticateExeption("I can not connect to the server...");
    }
}
我正在尝试使用我的AuthenticateXeption捕获exeption,但代码从未抛出新的AuthenticateXeption,我无法连接到服务器。。。;程序总是在HtmlResult=wc.UploadStringURI,myParameters上关闭;线路


为什么?

您正在捕获Auth异常,然后重新播放它的新版本

像这样想

using (WebClient wc = new WebClient())
{   
   try
   {
        wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
        HtmlResult = wc.UploadString(URI, myParameters);
        if (some failed condition)
        {
           // I don't know what actually throws this, this is just for sim purposes
           throw new AuthenticateExeption("I can not connect");
        }
    }
    catch(AuthenticateExeption a)
    {
        // Handle the exception
        Log(a.Message) // etc....
    }
    catch(Exception e)
    {
        // Handle all other exceptions
    }
}

从这一点上说,如果你真的想抛出你捕获的同一个异常,那么你应该首先捕获它,处理它,然后重新抛出它,进行外部try/catch处理

您可能会遇到另一种类型的异常。如果将catchAuthenticationException a替换为catchException ex并在该行上添加断点,则可以监视ex以查看发生的异常类型


或者,由于.Net将首先捕获最特定的异常,即最派生的类型,因此您可以离开当前的catch块,并在其下方添加一个额外的catchException ex块,以便在发生AuthenticateException时将其捕获,但所有其他异常都会转到更一般的情况。

您是否确定在try块中引发的异常属于AuthenticateExeption类型?…程序始终处于关闭状态。。。这是否意味着它会崩溃?这是因为您遇到了另一种类型的异常,但您只捕获了身份验证异常。可以添加多个捕捉块。只添加一个常规catchException ex.WebClient.UploadString根据文档抛出一个WebException或ArgumentNullException:出于调试目的,为什么不捕获a.消息或将其更改为Exception ex并告诉我们ex.消息是什么。。你想知道在这种情况下,什么是你自己的例外1.谢谢你的回答。解决我的问题。