Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的全局异常处理程序_Java_Android_Exception Handling - Fatal编程技术网

Java中的全局异常处理程序

Java中的全局异常处理程序,java,android,exception-handling,Java,Android,Exception Handling,我正在考虑使用Thread.setDefaultUncaughtExceptionHandler(…)调用为我的(Android)移动应用程序(使用Java语法)设置一个全局默认异常处理程序。我正在考虑向用户显示一个带有适当消息的警报对话框 设置DefaultExceptionHandlers时,是否需要遵循任何陷阱、警告和规则?是否有任何最佳实践,如确保进程被终止、将完整堆栈跟踪写入日志等 欢迎链接到文档、教程等,以便对此有所了解 谢谢 创建全局异常处理程序的一个可能问题是,您可能会陷入异常循

我正在考虑使用
Thread.setDefaultUncaughtExceptionHandler(…)
调用为我的(Android)移动应用程序(使用Java语法)设置一个全局默认异常处理程序。我正在考虑向用户显示一个带有适当消息的警报对话框

设置
DefaultExceptionHandlers
时,是否需要遵循任何陷阱、警告和规则?是否有任何最佳实践,如确保进程被终止、将完整堆栈跟踪写入日志等

欢迎链接到文档、教程等,以便对此有所了解


谢谢

创建全局异常处理程序的一个可能问题是,您可能会陷入异常循环中—除非程序终止,否则会重复抛出某些异常

如果您的意思是当抛出异常时,会显示一条消息,然后应用程序会终止,那么您就没事了。

  • 该名称有点误导,因为使用该方法将为所有线程设置默认异常处理程序
  • 确保不能从异常处理程序引发任何异常

  • 如果您是从异常处理程序执行GUI操作,请确保您是从正确的线程执行的
  • 未捕获异常只会停止发生异常的线程,如果这也会导致进程终止,这取决于可能正在运行的任何其他线程

如果在我的uncaughtException方法中,我只显示一个AlertDialog,运行时是否会自动终止/终止进程,或者我是否必须对此进行明确说明?如果在正常的代码流中显示AlertDialog,它是否会自动终止?“如果您是从异常处理程序执行GUI操作,请确保您是从正确的线程执行的。”这意味着什么?这意味着GUI操作应该在EDT线程中执行(必要时使用
invokeLater
),否则可能会发生奇怪的事情。