请查看以下代码:
public partial class App : Application
{
public App():base()
{
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
throw new InvalidOperationException("exception");
}
private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message);
e.Handled = true;
}
}
为什么处理程序无法捕获App构造函数引发的异常?
答案 0 :(得分:0)
我已经用这种方法来做同样的事情。
delete_cookie = function(name){
document.cookie = name+'=;expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/;';
};
delete_cookie('ck');
答案 1 :(得分:0)
App实例无法构建,因此Application.Current没有任何意义。您应该订阅AppDomain.CurrentDomain.UnhandledException
public App() : base()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
throw new InvalidOperationException("exception");
}
private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show(e.ExceptionObject.ToString());
}
答案 2 :(得分:0)
为什么处理程序无法捕获
App
构造函数引发的异常?
仅因为在构建App
之前没有调度程序在运行。
这是编译器为您生成的Main
方法:
[STAThread]
static void Main(string[] args)
{
App application = new App(); //<-- your throw here
application.InitializeComponent();
application.Run(); //<-- and there is no dispatcher until here
}
来自docs:
调用
Run
时,Application
将新的Dispatcher
实例附加到UI线程。接下来,调用Dispatcher
对象的Run
方法,这将启动消息泵以处理Windows消息。
您不能在实际创建Run
对象之前调用App
。