My Answer Is NO
Why?
There is one important thing you have to understand about the nature
of an Unhandled exception in Android, there isn't one.... in Android
it's an Uncaught exception which means you can't "handle" it or
recover from it like you maybe would in a .Net environment.
Xamarin(Mono) internally "handles" those uncaught exceptions by
surrounding literally everything with try-catch and raising the
Unhandled event but that is besides the point. It is also discouraged
to interact with the UI as well for various reasons.
Theoretically there are several "workarounds" for displaying a dialog
to the user or restarting the app, none of which I'd recommend on
doing. Instead you should surround sensitive areas with try-catch
clauses to handle expected exceptions, as for the unexpected one's
just use an exception reporting component and update your app after
analyzing the reported exceptions
Explation From
also you could catch the unhadled exception from app Like this
Create a base activity like name ErrorActivity
look at this example
protected override void OnCreate(Bundle bundle)
{
//register error handlers
AppDomain.CurrentDomain.UnhandledException += ErrorHandler.CurrentDomainOnUnhandledException;
TaskScheduler.UnobservedTaskException += ErrorHandler.TaskSchedulerOnUnobservedTaskException;
}
In error handler class
public static class ErrorHandler
{
/// <summary>
/// Tasks the scheduler on unobserved task exception.
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="unobservedTaskExceptionEventArgs">
/// The <see cref="UnobservedTaskExceptionEventArgs" /> instance containing
/// the event data.
/// </param>
public static void TaskSchedulerOnUnobservedTaskException(object sender,
UnobservedTaskExceptionEventArgs unobservedTaskExceptionEventArgs)
{
var newExc = new Exception("TaskSchedulerOnUnobservedTaskException",
unobservedTaskExceptionEventArgs.Exception);
LogUnhandledException(newExc);
}
/// <summary>
/// Currents the domain on unhandled exception.
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="unhandledExceptionEventArgs">
/// The <see cref="UnhandledExceptionEventArgs" /> instance containing the event
/// data.
/// </param>
public static void CurrentDomainOnUnhandledException(object sender,
UnhandledExceptionEventArgs unhandledExceptionEventArgs)
{
var newExc = new Exception("CurrentDomainOnUnhandledException",
unhandledExceptionEventArgs.ExceptionObject as Exception);
LogUnhandledException(newExc);
}
/// <summary>
/// Logs the unhandled exception.
/// </summary>
/// <param name="exception">The exception.</param>
internal static void LogUnhandledException(Exception exception)
{
try
{
string error =
$"Exception Caught:{DateTime.Now:F} The Error Message IS {exception.Message}
full stack trace is {exception.ToString()} ";
#if DEBUG
const string errorFileName = "errorlog.txt";
var libraryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
// iOS: Environment.SpecialFolder.Resources
var errorFilePath = System.IO.Path.Combine(libraryPath, errorFileName);
System.IO.File.WriteAllText(errorFilePath, error);
Android.Util.Log.Error("Crash Report error not handled", ex.ToString());
#else
// Log to Android Device Logging.
Android.Util.Log.Error("Crash Report", error);
#endif
}
catch (Exception ex)
{
Android.Util.Log.Error("Crash Report error not handled", ex.ToString());
// just suppress any error logging exceptions
}
}
}
Now you could inherit the all activitys from ErrorActivity like this
Public class Fooactivity:ErrorActivity
{
}
Now you can handled the error in app..So you get the error log from log File.. or android device logging monitor..Hope this helps...
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…