活动android的onCreate()方法中的错误处理

时间:2017-01-21 16:30:30

标签: android

我是Android开发的新手。在我的活动的重写@Component SingletonComponent方法中,我执行了一些操作。对于前者检查SharedPreference是否已经可用,然后路由到其他活动。如何在此onCreate()方法上执行异常处理。这是将内容包装在try catch中并在异常时显示错误对话框的正确方法吗?

如果未正确处理异常,在我的情况下是onCreate()方法,应用程序崩溃并显示消息:

  

不幸的是,您的应用程序停止了工作

在互联网上搜索时,我发现可以使用 UncaughtExceptionHandler 来处理它。任何示例实现以及如何从我的所有活动中调用它都会有所帮助。

2 个答案:

答案 0 :(得分:0)

通过这样的方法,您可以在onCreate()方法中捕获一般异常:

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    try {
        // do whatever you need
    } catch (Exception e) {
        e.printStackTrace();
    }
}

异常捕获可用于许多目标。一个有趣的方法是捕获特定的预期异常以修复一些问题(例如将一般值设置为变量,否则在发生错误后为null)。

然而,一般目的是避免错误导致问题或在最坏的情况下导致应用程序崩溃。根据您正在开发的软件类型,崩溃可能代表一个小问题(例如在Android应用程序中),一个非常大的问题(如在飞机的软件或发电厂的软件中)。

我们可以确定两种例外情况。

第一种类型是特定于明确问题的那些例外。必须将它们声明为方法签名,因此鼓励或鼓励您管理这些异常及其相关问题。这些异常表示在特定代码执行期间可能发生的错误,如解析错误或输入输出错误。对于这类问题,我们有特殊的例外,可以捕获并轻松管理它们(例如,如前所述,在错误发生后使用默认值初始化变量)。

这些异常的第二种类型代表了程序执行期间可能发生的一些常见问题。它们是一个大而通用的集合,通常它们发生的概率很低。因此,您并不反对管理它们。这种类型的主要示例是一般的Exception类。

正如Gabe Sechan所建议的,捕捉异常并不是解决错误的正确方法。

main() Java方法中捕获通用异常可以是一种方式,例如,如果没有其他可用的内容,则向用户显示默认的人类可读错误。 或者可以是一种保持当前操作失败的方法,以降低崩溃概率。

现在,在Android中,我们无法直接对main()方法采取行动。 onCreate()方法被执行并退出,因此在这里捕获一般的异常没有多大意义。显然,这还取决于您在onCreate()方法中执行的操作以及发生错误时要执行的操作。你可以做一些奇怪的事情(非常明确你应该在onCreate()方法中做什么),你可能需要管理一大堆问题只显示一个错误,所以它更有意义只捕获一般的异常在每个catch块中生成相同内容的许多特殊例外。

如果您想实现此目标(显示onCreate()执行期间发生的所有错误的消息,Activity Activity {},这是正确的方法。

如果您要实现的目的是拦截在所有应用程序执行期间生成的所有错误,那么一个好的方法可能是UncaughtExceptionHandler,其行为类似于捕获通用{{1}进入Java Excepetion方法。在这个层面上,描述了一个有趣的方法here

有关例外的更多信息,您可以阅读thisthis

答案 1 :(得分:0)

这是错误的方法。相反,进入你的logcat。读取异常的堆栈跟踪。弄清楚你做错了什么。修理它。只是捕获异常是一种可怕的做法,除非您因特定原因捕获特定异常 - 您的应用程序处于可以正常继续的状态的可能性非常小。不要懒惰,追查你的错误并修复它。