日期:2014-05-20  浏览次数:21327 次

Java为何使用 catch Exception e 无法捕获NullPointerException
使用android写的程序,在个别手机上出现空指针异常,很是不解为何没有正常捕获处理,等待高手解答


源码:
Java code

    public boolean register(String mima){
        try{
            [color=#FF0000]String mingWen = decrypt(mima);[/color]            String IMEI = getIMEI();
            
            mIsRegister = MEI.equals(mingWen);
        }catch(Exception e){
            e.printStackTrace();
            mIsRegister = false;
        }
        return mIsRegister;
    }


    private String decrypt(String miString) {
        byte[] miByte = Base64.decode(miString);
        byte[] mingByte = rsa.decrypt(miByte);
[color=#FF0000]        return new String(mingByte);[/color]    }


出错log
Java code

    java.lang.NullPointerException    
    at java.lang.String.<init>(String.java:198)    
    at com.anxing.englishgameII.Register.decrypt(Register.java:116)    
    at com.anxing.englishgameII.Register.register(Register.java:84)    
    at com.anxing.englishgameII.GameApp.onCreate(GameApp.java:48)    
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1045)



------解决方案--------------------
你已经捕获了,这个异常堆栈是你用 e.printStackTrace(); 方法输出的。
------解决方案--------------------
try{

}catch(Throwable e){

}
可以捕获一切exception
------解决方案--------------------
汗~~~

你不是已经捕获了空引用异常了吗?

而且空引用异常已经执行了捕获代码了啊。。。。那就是e.printStack();

你要问的是如何手动处理空引用异常吧?这个非常简单。。。。只要在try块中相关语句中加一个if(Object!=null)就行了。。。。。
//没学过j2me,你这里报异常应该是String mingWen吧,只要你在判断一下if(minWen!=null){你的语句}