我的例外不能被抓住

时间:2013-08-07 20:57:09

标签: android exception nullpointerexception

我似乎无法捕捉到这个异常并且应用程序崩溃了。

public void GoToStation(View v)
{
try
{
 Intent myIntent = new Intent(MainActivity.this, CustomizedListViewStudentZone.class);
 startActivityForResult(myIntent, 0);
} 

}
catch (Exception e)
{
Toast.makeText(this, "You need a data connection to view Safety Zones", Toast.LENGTH_LONG).show();  

}

我只是不断收到应用程序崩溃和空指针异常

这是我的Log Cat

01-06 04:55:28.667: E/AndroidRuntime(2983): FATAL EXCEPTION: main
01-06 04:55:28.667: E/AndroidRuntime(2983): java.lang.RuntimeException: Unable to start activity ComponentInfo{police.uk.greatermanchesterpoliceandroid/police.uk.greatermanchesterpoliceandroid.CustomizedListViewStation}: java.lang.NullPointerException
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1830)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.access$1500(ActivityThread.java:132)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.os.Looper.loop(Looper.java:150)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.main(ActivityThread.java:4277)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at java.lang.reflect.Method.invokeNative(Native Method)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at java.lang.reflect.Method.invoke(Method.java:507)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at dalvik.system.NativeStart.main(Native Method)
01-06 04:55:28.667: E/AndroidRuntime(2983): Caused by: java.lang.NullPointerException
01-06 04:55:28.667: E/AndroidRuntime(2983):     at police.uk.greatermanchesterpoliceandroid.CustomizedListViewStation.onCreate(CustomizedListViewStation.java:100)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
01-06 04:55:28.667: E/AndroidRuntime(2983):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794)
01-06 04:55:28.667: E/AndroidRuntime(2983):     ... 11 more

4 个答案:

答案 0 :(得分:1)

正如Gabriel Netto所述,您的错误位于onCreate的{​​{1}}。对CustomizedListViewStation的调用只会触发对Android操作系统的意图并立即返回,因此它不会捕获您的新活动引发的任何异常。实际上,您在startActivityForResult之后放置的代码甚至可能会在startActivityForResult之前运行。您需要检查onCreate onCreate中的错误。

答案 1 :(得分:0)

由于Android操作系统的体系结构,您无法捕获此类异常。通过调用startActivity(或类似方法),您实际上并没有立即创建新的Activity。相反,您说想要显示此类Activity和操作系统会注册您的Intent(字面意思是意图)。然后,当操作系统决定处理您的Intent时,它将创建您的Activity

换句话说,Activity将不会在startActivity的调用中创建,但稍后会创建。在OS的一些内部逻辑中。所以,当抛出异常时 - 你无法捕捉它,因为它不再是你的方法了。

答案 2 :(得分:0)

正如Dmitry Zaitsev所说,你不会在startActivity处理活动生命周期的异常。

相反,您应该在可以抛出异常的第二个Activity的onCreate上捕获异常。

答案 3 :(得分:0)

非常感谢所有回答的人。这确实很好用。目标活动抛出了错误。

修复是在创建CustomizedListViewStudentZone时处理错误。

我对此方法应用了try catch,问题已修复。