Java中的异常分为编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。
编译时异常:编译时异常是在编译阶段就出现的异常,必须在代码中显式处理或声明抛出。编译时异常包括IOException、ClassNotFoundException等。如果不处理或声明抛出编译时异常,编译器将会报错,不允许程序通过编译。编译时异常的处理方式可以是使用try-catch语句进行捕获和处理,或者在方法签名中使用throws关键字声明异常。
运行时异常:运行时异常是在程序运行时才出现的异常,不需要在代码中显式处理或声明抛出。运行时异常包括NullPointerException、ArrayIndexOutOfBoundsException等。运行时异常是由程序逻辑错误造成的,通常是程序员的错误,比如对空引用进行操作、数组越界等。运行时异常不强制要求进行捕获和处理,如果不处理,程序将终止执行并抛出异常信息。
总结:
编译时异常必须显式处理或声明抛出,运行时异常不需要。
编译时异常发生在编译阶段,运行时异常发生在程序运行阶段。
编译时异常是由外部因素(如IO错误)引起的,运行时异常是由程序逻辑错误引起的。
编译时异常必须处理,否则编译器报错,运行时异常可以不处理,但会导致程序终止执行。
需要注意的是,运行时异常虽然不强制要求进行处理,但良好的编程习惯是尽量对可能发生的异常进行处理,避免程序崩溃或产生不可预料的结果。