异常分类
-
编译异常:IO异常(文件操作、网络通信)、SQL异常(连接数据库)、找不到类异常(加载类失败)
-
运行时异常:空指针、数组越界、非法参数异常、算术异常(比如分母为0)、类转换异常
-
错误:内存溢出、栈内存溢出
在Java中,异常(Exception)可以分为三个主要的分类:检查异常(Checked Exception)、运行时异常(Runtime Exception)和错误(Error)。
-
检查异常(Checked Exception) :这类异常必须在代码中进行处理,否则编译器将会报错。它们继承自 java.lang.Exception 类,包括编程逻辑错误、输入输出错误等。一般情况下,程序员应该预见并捕获这些异常,或者向上层方法抛出。常见的检查异常包括 IOException (输入输出异常)、 SQLException (SQL异常)等。
-
运行时异常(Runtime Exception) :这类异常是由程序错误导致的,也称为非检查异常。它们继承自 java.lang.RuntimeException 类,通常表示程序中的错误逻辑或操作。运行时异常在编译阶段不需要显式地声明或捕获,但在运行时仍然可能发生。常见的运行时异常包括 NullPointerException (空指针异常)、 ArrayIndexOutOfBoundsException (数组越界异常)等。
-
错误(Error) :这类异常表示在程序运行过程中发生了严重的问题,通常是无法恢复的错误。错误继承自 java.lang.Error 类,一般由JVM(Java虚拟机)抛出,例如内存溢出错误(OutOfMemoryError)和栈溢出错误(StackOverflowError)等。与异常不同,一般不应该捕获错误,而是要采取适当的措施来修复问题。
处理异常关键字
1、处理异常:try-catch-finally
Try: 可能会有异常的代码块
catch中操作:
如打印异常信息、日志记录、重新抛出异常等
finally:用于定义无论异常是否发生都会执行的代码块。
2、抛出异常 :throw
3、声明异常:throws
常见异常
编译时异常(Checked Exception):
-
IOException:输入输出异常,如文件操作、网络通信等。
-
SQLException:SQL 异常,如数据库连接、查询等。
-
ClassNotFoundException:找不到类异常,当加载类失败时抛出。
-
NoSuchMethodException:找不到方法异常,当调用方法不存在时抛出。
-
InterruptedException:线程中断异常,当线程在等待、休眠或阻塞时被中断时抛出。
运行时异常(Unchecked Exception):
-
NullPointerException:空指针异常,当引用为空时调用其方法或访问其属性时抛出。
-
ArrayIndexOutOfBoundsException:数组索引越界异常,当访问数组超出有效索引范围时抛出。
-
IllegalArgumentException:非法参数异常,当传递给方法的参数不合法时抛出。
-
ClassCastException:类转换异常,当试图将对象强制转换为不兼容的类型时抛出。
-
ArithmeticException:算术异常,如除以零等数学运算异常。