Dan*_*nM7 10 c# asp.net error-handling
有没有办法在ASP.NET中处理错误"WebDev.WebServer.Exe已停止工作"并保持页面运行甚至只是WebServer运行?或者这是一项不可能完成的任务,本质上就像是在问死后如何挽救某人的生命?
我在try/catch块中有导致错误的代码,但这没有什么区别.我也尝试过注册一个新的UnhandledExceptionEventHandler,但这也不起作用.如果我做错了,我的代码就在下面.
另外要明确的是,我并没有就如何防止错误寻求帮助; 我想知道是否以及何时发生错误,如果有什么我可以做的来处理它.
更新1:TestOcx是一个VB6 OCX,它将字符串的引用传递给用Clarion编写的DLL .
更新2:根据@JDennis的回答,我应该澄清该catch(Exception ex)
块也没有被输入.如果我从try\catch
块中删除了对OCX的调用,它仍然无法访问该UnhandledException
方法.基本上有两个区域无法执行.
更新3:来自@AndrewLewis,我试图添加一个常规catch
块来捕获任何非CLS兼容的异常,这也不起作用.但是,我后来发现,自.NET 2.0开始以来,所有非CLS异常都包含在内部,RuntimeWrappedException
因此catch (Exception)
也将捕获非CLS兼容的异常.有关详细信息,请查看此处的其他问题.
public bool TestMethod()
{
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
string input = "test";
string result = "";
try
{
TestOcx myCom = new TestOcx();
result = myCom.PassString(ref input); // <== MAJOR ERROR!
// do stuff with result...
return true;
}
catch (Exception ex)
{
log.Add("Exception: " + ex.Message); // THIS NEVER GETS CALLED
return false;
}
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
// THIS NEVER GETS CALLED
try
{
Exception ex = (Exception)e.ExceptionObject;
log.Add("Exception: " + ex.Message);
}
catch (Exception exc)
{
log.Add("Fatal Non-UI Error: " + exc.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2947 次 |
最近记录: |