jing547789635 2011-09-27 16:43
浏览 193
已采纳

Java try/catch 异常处理的问题

public static void main(String[] args) {
        System.out.println(test(null)+","+test("")+","+test("1"));
    }

    @SuppressWarnings("finally")
    private static int test(String str) {
        try{
            return str.charAt(0)-'0';
        }catch(NullPointerException e){
            e.printStackTrace();
            return 1;
        }catch(RuntimeException e){
            e.printStackTrace();
            return 2;
        }catch(Exception e){
            e.printStackTrace();
            return 3;
        }finally{//finally  永远被执行
            return 4;
        }
            
    }

求输出结果及解释,本人菜鸟,见笑了!

 

  • 写回答

5条回答 默认 最新

  • DreamZhong 2011-09-27 16:52
    关注

    java.lang.NullPointerException
    at com.dream.model.ExceptionTest.test(ExceptionTest.java:17)
    at com.dream.model.ExceptionTest.main(ExceptionTest.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
    java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(String.java:695)
    at com.dream.model.ExceptionTest.test(ExceptionTest.java:17)
    at com.dream.model.ExceptionTest.main(ExceptionTest.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
    4,4,4

    第一个方法调用会报NullPointerException
    第二个方法调用会报StringIndexOutOfBoundsException
    第三个方法运行正常

    因为有finally块,所以不论前面的运行结果是什么,都会返回4,所以会看到4,4,4这样的输出结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改