捕获编程Android的所有typesexception

我正在为Android OS开发一个应用程序。 由于这是我的第一个应用程序,我认为我犯了一些编程错误,因为我几乎无法追踪错误的原因。 因此,我猜测,虽然我正在尝试修复错误,有没有办法在我的整个活动生命周期中使用一个try-catch捕获所有types的exception

那将是非常棒的,我很无聊看着我的银河系S说:“抱歉应用程序App已经意外停止了”:(

我真的,真的不推荐这个……

try { ... } catch (Exception e) { // This will catch any exception, because they are all descended from Exception } 

您是否正在查看堆栈跟踪以调试问题? 跟踪它们应该不难。 查看LogCat并查看大块红色文本以查看导致崩溃的方法以及您的错误。

如果您以这种方式捕获所有错误,您的程序将无法按预期运行,并且当您的用户报告时,您将无法从Android电子市场获得错误报告。

您可以使用UncaughtExceptionHandler来防止一些崩溃。 我使用一个,但仅用于将堆栈跟踪打印到文件,因为我正在远离计算机的手机上调试应用程序。 但是在我完成之后,我将未捕获的exception传递给默认的Android UncaughtExceptionHandler,因为我希望Android能够正确处理它,并让用户有机会向我发送堆栈跟踪。

我假设像纯java一样

 try { } catch(throwable t) { } 

但这是非常糟糕的做法。

另外看看

设置UncaughtException处理程序

如果您使用的是Eclipse,则应该在“LogCat”中记录强制关闭应用程序(也就是您提到的消息)的每个exception。

查看LogCat的最简单方法是在LogCat选项卡上打开DDMS透视图和clic(如果尚未显示,则从“视图”菜单中打开它)。

 import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.content.Context; public class SRSDexception implements Thread.UncaughtExceptionHandler { private Thread.UncaughtExceptionHandler defaultUEH; private Activity app = null; public SRSDexception(Activity app) { this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); this.app = app; } public void uncaughtException(Thread t, Throwable e) { StackTraceElement[] arr = e.getStackTrace(); String Raghav =t.toString(); String report = e.toString()+"\n\n"; report += "--------- Stack trace ---------\n\n"+Raghav; for (int i=0; i