我是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...");
}
}
我正在尝试catch
使用我的AuthenticateExeption
,但代码永远不会转到throw new AuthenticateExeption("I can not connect to the server...");
并始终在HtmlResult = wc.UploadString(URI, myParameters);
行上编程。
为什么?
答案 0 :(得分:0)
您正在捕获Auth Exception,然后重新抛出它的新版本......
想得更像......
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以进一步处理。
答案 1 :(得分:0)
您可能会遇到其他类型的例外情况。如果您将catch(AuthenticationException a)
替换为catch(Exception ex)
并在该行上添加断点,则可以观看ex
以查看正在发生的异常类型。
或者,因为.Net将首先捕获最具体的异常(即大多数派生类型),因此您可以保留当前的catch块并在其下添加一个catch(Exception ex)
块,以便{{1}发生它会被捕获,但所有其他异常将落到更一般的情况。