如果我的应用程序崩溃,它会挂起几秒钟,然后Android会告诉我应用程序崩溃了,需要关闭。所以我在考虑用一个通用的命令来捕获我应用中的所有异常:
try {
// ...
} catch(Exception e) {
// ...
}
并创建一个新的Activity
,解释应用程序立即崩溃(同时也让用户有机会发送包含错误详细信息的邮件),而不是由于安卓系统的延迟。有没有更好的方法来实现这一点,或者这是不被鼓励的?
更新:我使用的是一台支持ART的Nexus5,我没有注意到应用程序崩溃时的延迟(我最初说的“挂起”)。我认为既然现在一切都是本机代码,崩溃就会随着所有崩溃信息的获得而立即发生。也许Nexus 5很快:)不管怎样,这在未来的Android版本中可能不会成为一个担忧(考虑到ART将成为Android L中的默认运行时)。
发布于 2013-05-15 18:34:46
在这里,检查link for reference。
在这里,您将创建一个名为ExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler
的类。
在这个类中,你将做一些挽救生命的事情,比如创建堆栈跟踪和准备上传错误报告等等。
现在来了重要的部分,也就是如何捕获异常。虽然这很简单。将下面的代码行复制到每个活动中,紧跟在被覆盖的onCreate
方法中的超级方法调用之后。
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
您的活动可能类似于下面的…
public class ForceClose extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
setContentView(R.layout.main);
}
}
希望这能帮到你。
发布于 2013-08-09 17:40:47
您只需使用通用警告对话框即可快速显示错误消息。例如..。
//******************************************
//some generic method
//******************************************
private void doStuff()
{
try
{
//do some stuff here
}
catch(Exception e)
{
messageBox("doStuff", e.getMessage());
}
}
//*********************************************************
//generic dialog, takes in the method name and error message
//*********************************************************
private void messageBox(String method, String message)
{
Log.d("EXCEPTION: " + method, message);
AlertDialog.Builder messageBox = new AlertDialog.Builder(this);
messageBox.setTitle(method);
messageBox.setMessage(message);
messageBox.setCancelable(false);
messageBox.setNeutralButton("OK", null);
messageBox.show();
}
还可以将其他错误处理选项添加到此方法中,如打印堆栈跟踪
发布于 2014-03-16 23:19:55
我在Log类中发现了"wtf“(多么可怕的失败)方法。从描述中可以看出:
根据系统配置,可能会将报告添加到DropBoxManager和/或进程可能会立即终止并显示错误对话框。
http://developer.android.com/reference/android/util/Log.html
https://stackoverflow.com/questions/16561692
复制相似问题