如何跟踪xamarin.mac app未处理的异常

时间:2018-03-07 12:27:34

标签: xamarin xamarin.mac

我想在我的xamarin mac应用程序中获取未处理异常的崩溃报告,例如用于跟踪android和ios应用程序异常的曲棍球应用程序。我搜索了很多,但没有得到任何跟踪未处理的异常的应用程序。请建议用于跟踪xamarin.mac中的例外情况的任何应用。提前谢谢。

2 个答案:

答案 0 :(得分:1)

任务异常通常不被观察到(即,在未等待的Task.Run()中发生的任何异常)。您可以通过将其放入AppDelegate的DidFinishLaunching覆盖来捕获它们:

TaskScheduler.UnobservedTaskException += 
TaskScheduler_UnobservedTaskException;

void TaskScheduler_UnobservedTaskException(object sender, 
UnobservedTaskExceptionEventArgs e)
{
    System.Console.WriteLine("**Unobserved Exception**");
    System.Console.WriteLine(e.Exception.Message);
}

答案 1 :(得分:0)

我建议您自己实施。 Main.cs文件充当Xamarin Mac应用程序的主要入口点。它包含一个静态Main方法,用于创建新的Xamarin.Mac应用程序实例:

using AppKit;

namespace Test
{
    static class MainClass
    {
        static void Main(string[] args)
        {
            NSApplication.Init();
            NSApplication.Main(args);
        }
    }
}

您可以尝试在NSApplication.Init();之后设置处理程序:

System.AppDomain.CurrentDomain.UnhandledException 
    += CurrentDomain_UnhandledException;

string a = null;
System.Diagnostics.Debug.WriteLine(a.Length);

最后两行当然会强制空指针异常。

缺少一件:

private static void CurrentDomain_UnhandledException(object sender, System.UnhandledExceptionEventArgs e)
{
    System.Diagnostics.Debug.WriteLine("oh no");
}

希望这有帮助。