我有一段这样的代码。
class Facebook
{
WebBrowser wb = new WebBrowser();
public bool isDone = false;
public Facebook()
{
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
}
public void Navidate(string URL = "http://www.facebook.com")
{
wb.Navigate(URL);
}
public void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = sender as WebBrowser;
if (wb != null && wb.StatusText.Contains("404"))
{
// i want to throw this exception to outside how ?
throw new ServerNotFound("Error 404");
}
else
{
isDone = true;
}
}
}
public class ServerNotFound : Exception
{
public ServerNotFound(string Message)
: base(Message)
{
}
在这里,您可以看到它可以引发异常的Web浏览器事件 我想像这样处理这个异常。
static class Program
{
[STAThread]
static void Main()
{
try
{
Facebook fb = new Facebook();
fb.Navidate();
do
{
Application.DoEvents();
}
while (!fb.isDone);
}
catch (ServerNotFound ex)
{
// i want to handle that exception here ?
MessageBox.Show(ex.Message);
}
}
}
你可以帮帮我吗?由于事件,它无法正常工作。
答案 0 :(得分:1)
DocumentCompleted
事件在与主应用程序不同的线程中触发。如果在调试时打开Visual Studio的“线程”窗口,则可以看到此信息。您不能将异常从一个线程抛出到另一个线程。
如果您使用的是WPF或Windows窗体,则不能说,但假设后者,您应该使用表单或控件上的Invoke方法更新UI或打开消息框,而不是试图抛出异常。