一、异常是什么?
在Java中,异常是指在程序运行时所发生的错误或不正常的行为。当代码执行遇到异常,会导致程序中断,如果不加处理就会使整个程序崩溃。为了避免这种情况,我们可以使用Java的异常处理机制,将异常捕获与处理。基类是Throwable。
二、异常的种类
Java异常分为两类:可检查异常(Checked Exception)和不检查异常(Unchecked Exception)。
可检查异常:
可检查异常是指在程序编译时能够被检测到的异常,程序员需要在代码中进行明确的异常处理或通过 throws 关键字将异常抛出给调用者。
以下是 Java 常见的可检查异常类型:
- IOException:操作文件或网络连接可能出现的异常;
- SQLException:操作数据库出现错误时的异常;
- ClassNotFoundException:在使用 Class.forName() 方法时,如果找不到指定的类,就会抛出异常;
- InterruptedException:当一个线程被另一个线程中断时,会抛出该异常;
- InvocationTargetException:通过反射调用方法,如果该方法抛出异常,则会将该异常包装在InvocationTargetException 中抛出。
不检查异常:
不检查异常是指在程序运行时才能够被检查到的异常,通常是由于代码逻辑错误或资源问题引起的。
以下是 Java 常见的不检查异常类型:
- RuntimeException:程序本身的逻辑错误,如算数异常、数组下标越界等;
- IndexOutOfBoundsException:当访问某个集合的数组、列表或字符串时索引越界时引发;
- IllegalArgumentException:传递给方法的参数无效时抛出;
- NullPointerException:当一个空对象上调用实例方法或访问实例变量时引发的异常。
以下是一个异常处理的示例代码:
在这个示例代码中,我们尝试读取一个文件的内容,并使用 try-catch 语句捕获可能出现的 FileNotFountException 和 IOException。如果文件不存在,程序会输出 “The file doesn’t exist.” ,如果读取文件过程中发生 IO 异常,程序会输出 “Errored reading the file.” 。
总结
Java异常处理机制对于编写可靠的程序至关重要。可检查异常需要在代码中显式地进行处理,使程序在编译和运行期间都能够更好地处理异常。而不检查异常则是程序逻辑错误或资源问题引起的异常,需要通过编写健壮的代码来避免异常的发生。