JAVA异常体系结构详解
异常概述
在Java基础编程语言中,异常(Exception)是指在一个程序的运行过程中发生的错误或者问题。异常表示程序在运行时遇到了某个非正常的情况,这个特殊情况将终止当前正在执行的代码块并且会向调用者传递一个错误信息,在异常处理的过程中是使用异常对象来表示的。相关类都保存在 java.lang.Exception 包中。
Java 的异常体系结构以Throwable为顶级父类,它派生出两个字类: Error 和 Exception。 Error 类对象表示严重的错误,程序通常无法处理;Exception 表示非常规事件,程序可以通过 try...catch 块等异常处理机制来处理这些事件。
异常处理
Java 语言提供的异常处理机制是通过 try, catch, finally 块来实现的,try 后面紧随着的是主要语句块,在其中产生异常的语句会被直接跳到 catch 块中进行处理。
try{
//主要语句块
}catch(异常类型 e){
//异常处理语句块
}finally{
//一定执行语句块
}
在 try 块语句内,可能会产生异常,如果没有进行异常处理,在异常发生的时候程序就会直接崩溃。因此,我们需要通过 catch 块中的异常处理语句来处理异常并解决问题。finally块是无论程序是否出现异常都执行的块,通常用来进行资源释放。其中异常类型是指关心捕获的异常类型,如果没有指明具体 异常类型,在 try 块中产生的所有异常都会被 catch 块捕获和处理。
异常分类
Java 的异常按照是否在程序中被检查,分为可查性异常和运行时异常或错误。
可查性异常
可查性异常主要指在文件异常、网络异常等情况,在Java编译器进行编译时,这些异常已经被标识出来并可以进行检查处理。
常用的可查性异常有:
- FileNotFoundException:文件未找到异常。
- IOException:输入输出异常。
- ClassNotFoundException:未找到相应的类。
- SQLException:操作数据库异常。
运行时异常或错误
运行时异常或错误是指在程序运行期间,由于代码的编写错误或环境因素导致的异常。Java 运行时系统出现了不可分析的行为或数据状态。由于这些异常或错误将会在程序执行过程中产生,而在编译时不能定位。
常用的运行时异常或错误有:
- NullPointerException:空指针异常。
- ArrayIndexOutOfBoundsException:数组下标越界。
- IllegalArgumentException:非法参数异常。
- NoClassDefFoundError:未定义类错误。
异常处理示例
异常抛出
在Java语言中,我们自定义一个方法,并在其中进行除以零操作,当 divisor 为0时,Java默认会抛出 java.lang.ArithmeticException 异常。
public class ExceptionTest {
public static void main(String[] args) {
try{
division(30,0);
}catch(ArithmeticException e){
System.out.println("除数不为0");
}
}
public static void division(int num1, int num2) throws ArithmeticException{
if(num2 == 0){
throw new ArithmeticException("除数不能为0");
}
System.out.println(num1/num2);
}
}
自定义异常
Java语言中,可以通过继承 Exception 或者是 RuntimeException 来定义自己的异常类。当出现代码异常情况时,程序可以抛出这个异常并在 catch 语句块中进行处理。
public class MyExceptionTest {
public static void main(String[] args) {
try{
throw new MyException("自定义异常");
}catch(MyException e){
System.out.println(e.toString());
}
}
}
class MyException extends Exception{
public MyException(String msg){
super(msg);
}
}
以上就是 Java 异常体系结构及相关内容的详细讲解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA异常体系结构详解 - Python技术站