>  Q&A  >  본문

关于Java异常的疑问

众所周知下面的代码编译不过:

public class test{
    private static void haha(){
        throw new Exception();
    }
    public static void main(String[] args) {
        haha();
        return;
    }
}

javac test.java

未报告的异常错误Exception; 必须对其进行捕获或声明以便抛出。

但是下面的代码没有进行错误处理,却能够通过编译:

public class test{
    public static void main(String[] args) {
        String s = new String("test");
        System.out.println(s.substring(0,6));
        return;
    }
}

javac test.java
java test

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
        at java.lang.String.substring(Unknown Source)
        at test.main(test.java:4)

请问这是什么原因?

PHP中文网PHP中文网2744일 전578

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-18 10:51:21

    StringIndexOutOfBoundsException은 RuntimeException을 상속하므로 명시적으로 처리할 필요가 없습니다.

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 10:51:21

    처음 발생한 예외는 확인된 예외로, 이는 컴파일러 예외이므로 수동으로 처리해야 합니다. 두 번째로 발생한 StringIndexOutOfBoundsException은 확인되지 않은 예외이자 런타임 예외이므로 수동으로 처리할 필요가 없습니다.

    회신하다
    0
  • 취소회신하다