2012-08-12 29 views
0

中捕获NullPointerException的问题我有一个名为UpdaterService的服务类。以下是我的onStartCommand()方法:我遇到了在android

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     if(Constants.DEBUG) Log.d(TAG, "onStarted"); 
     updater = new Updater(); 
     try { 
      updater.start(); 
     } catch(NullPointerException e) { 
      Stuff.showErrorMessage(); 
     } 

     return Service.START_STICKY; 
} 

updater是扩展Thread的类Updater的自定义对象。以下是我得到的例外:

08-12 12:19:49.708: ERROR/AndroidRuntime(1995): Uncaught handler: thread Updater exiting due to uncaught exception 
08-12 12:19:49.708: ERROR/AndroidRuntime(1995): java.lang.NullPointerException: HostActivity not instantiated 
    at com.morten.app.klepprc.services.UpdaterService$Updater.run(UpdaterService.java:135) 

这会导致我的应用程序崩溃。在UpdaterService.java的第135行:

if(application.getHostActivity() == null) { 
    throw new NullPointerException("HostActivity not instantiated"); 
} 

在我的catch块中如何处理异常?所有的反馈appriciated。

回答

1

我假设你的start();方法是非阻塞的。

run()方法发生异常,它在不同的线程上?

+0

感谢您的回复。抛出异常的run()方法是Updater类线程的run()方法。 – 2012-08-12 10:59:37

+0

是的,它与你的try-catch是不同的线程......尝试把try-catch放在run方法中。 – Madushan 2012-08-12 11:09:09

+0

谢谢!这帮了我,但现在我得到了一个不同的错误:'08-12 13:13:26.118:错误/ AndroidRuntime(2089):未捕获的处理程序:线程更新程序由于未捕获的异常退出 08-12 13:13:26.118: ERROR/AndroidRuntime(2089):java.lang.RuntimeException:无法在android.os.Handler中调用Looper.prepare() 的线程内部创建处理程序。 (Handler.java:121) at android.widget.Toast。 (Toast.java:68) at android.widget.Toast.makeText(Toast.java:231) at com.morten.app.klepprc.utility.Stuff.showErrorMessage(Stuff.java:94)' – 2012-08-12 11:17:22