C# .NET异常不存在';不能从类传递到主程序
我使用C#创建了一个简单的控制台应用程序。它创建一个类的实例并调用该类的一个方法。此方法包含一个try-catch块,用于捕获System.Net.WebException类型的异常,并对其进行重试,以便主方法能够捕获它并采取适当的行动。当我执行编译后的应用程序时,异常不会传递给主类,用户永远不会看到我的自定义错误消息。相反,这个屏幕会弹出,告诉我有一个未处理的WebException(它是德语的,但我认为它无论如何都可以被识别;-): 这是名为BuffaloRouter的类中的方法:C# .NET异常不存在';不能从类传递到主程序,c#,.net,exception,console-application,C#,.net,Exception,Console Application,我使用C#创建了一个简单的控制台应用程序。它创建一个类的实例并调用该类的一个方法。此方法包含一个try-catch块,用于捕获System.Net.WebException类型的异常,并对其进行重试,以便主方法能够捕获它并采取适当的行动。当我执行编译后的应用程序时,异常不会传递给主类,用户永远不会看到我的自定义错误消息。相反,这个屏幕会弹出,告诉我有一个未处理的WebException(它是德语的,但我认为它无论如何都可以被识别;-): 这是名为BuffaloRouter的类中的方法:
public void Login()
{
string sUrl = _sUrl + "/somestuff.htm";
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(sUrl);
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(sUrl), "Basic", _credential);
request.Credentials = credCache;
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream receiveStream = response.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
_sContent = reader.ReadToEnd();
response.Close();
receiveStream.Dispose();
reader.Dispose();
_parseSessionIds();
}
catch (WebException)
{
throw;
}
}
这是我的主类中的方法:
private static bool _login()
{
_router = new BuffaloRouter(_sIP, new System.Net.NetworkCredential("root", _sPassword));
try
{
Console.WriteLine("Login...");
_router.Login();
return true;
}
catch (System.Net.WebException)
{
_showErrorMessage("Could not connect to " + _sIP);
return false;
}
}
更新:
我觉得有点尴尬,不想谈这个。但就像以前的几次一样,我并不真的看我在做什么;-)
当我运行应用程序时,主类中的方法甚至没有被调用。被调用的一个没有try-catch块,因此在我的类的方法中抛出的异常使应用程序执行它应该执行的操作,即崩溃!!
我很愚蠢,很抱歉浪费了大家的时间。如果您所做的只是重新引用异常,那么您首先不需要捕获它。只需从
Login
方法中删除try…catch
完成此操作后,请临时编辑代码以捕获常规异常并对其进行调试,以了解实际引发的异常。完成此操作后,再次编辑代码以捕获该异常(并且仅捕获该异常)。如果您所做的只是重新引用该异常,那么您首先不需要捕获它。只需从
Login
方法中删除try…catch
完成此操作后,请临时编辑代码以捕获常规异常并对其进行调试,以了解实际引发的异常。完成此操作后,再次编辑代码以捕获该异常(以及该异常本身)。正如ChrisF所指出的,您不需要在
登录
方法中重新显示错误。如果catch块没有在\u login
方法中运行,那么我猜您没有捕获正确的异常
由于ChrisF已表明您不需要在登录方法中重新显示错误,因此您是否确定获得了
System.Net.WebException
。如果catch块没有在\u login
方法中运行,那么我猜您没有捕获正确的异常
你确定你得到了一个
System.Net.WebException
我不熟悉那个错误对话框。翻译可能有助于您获得更好/更快的答案。该对话框基本上说明应用程序不再工作,并为我提供了联机查找解决方案、关闭应用程序或调试解决方案的选项。最优秀的人也会遇到:-)@jarod1701-我的答案仍然适用:)我不熟悉该错误对话框。翻译可能有助于您获得更好/更快的答案。该对话框基本上说明应用程序不再工作,并为我提供了联机查找解决方案、关闭应用程序或调试解决方案的选项。最优秀的人也会遇到:-)@jarod1701-但我的答案仍然适用:)