异常

发布时间 2023-11-24 17:07:25作者: califorium

什么是异常

异常:是在程序中导致程序中断运行的一种指令流。
在idea中出现蓝色的第一个位置就是异常发生的位置
例如

public class ExceptionDemo01{
  public static void main(String argsp[]){
    int i = 10 ;
    int j = 0 ;
    System.out.println("============= 计算开始 =============") ;
    int temp = i / j ; // 进行除法运算
    System.out.println("temp = " + temp) ;
    System.out.println("============= 计算结束 =============") ;
  }
};
============= 计算开始 =============
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ExceptionDemo01.main(ExceptionDemo01.java:6)

异常体系结构

异常指的是Exception
Exception类, 在Java中存在一个父类Throwable(可能的抛出)
Throwable存在两个子类:
1.Error:表示的是错误,是JVM发出的错误操作,只能尽量避免,无法用代码处理。
2.Exception:一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。

RuntimesExcpetion-运行时异常,非受检异常

JVM不会抛出异常

处理异常

//如果要想对异常进行处理,则必须采用标准的处理格式,处理格式语法如下:
try{
  // 有可能发生异常的代码段
}catch(异常类型1 对象名1){
  // 异常的处理操作
}catch(异常类型2 对象名2){
  //异常的处理操作
}
finally{
  //异常的统一出口
}

多异常捕获的注意点:

1、 捕获更粗的异常不能放在捕获更细的异常之前。
2、 如果为了方便,则可以将所有的异常都使用Exception进行捕获。

try-catch的异常处理流程

1、 一旦产生异常,则系统会自动产生一个异常类的实例化对象。
2、 那么,此时如果异常发生在try语句,则会自动找到匹配的catch语句执行,如果没有在try语句中,则会将异常抛出.
3、 所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功,则表示由此catch进行处理
4、 发生错误try会直接去匹配catch块,不会接着执行try语句块的内容

throw和throws

throw异常抛出自己处理,throws异常抛出用户处理

throw

public int calc(int a,int b) {
    try{
        int c=0;
        if(b!=0)    c=a/b;
        else throw new ArithmeticException("0 is Divisor");
    }catch(ArithmeticException ex){
        System.out.pritln(ex.getMessage());
    return c;
}

throw

public int calc(int a,int b) throws ArithmeticException{
    try{
        int c=0;
        if(b!=0)    c=a/b;
        else throw new ArithmeticException("0 is Divisor");
    return c;
}