java异常体系结构详解

1年前 (2023) 程序员胖胖胖虎阿
130 0 0

文章目录

  • 前言
  • 一、异常是什么?
    • 1.定义
    • 2.java异常的结构分析图
  • 二、java中的异常处理机制
    • 三.java中异常处理结构
      • 1. try-catch 结构:
        • 1.异常捕获代码
        • 2.无异常捕获代码
    • 2.try-catch-finally
    • 3.多重catch使用结构
      • 1.正确代码案例
      • 2.错误代码案例
      • 3.异常打印输出

前言

一、异常是什么?

1.定义

     异常:程序运行过程中,由于某些原因导致程序出错,从而结束程序运行,这就称为异常

2.java异常的结构分析图

java异常体系结构详解
Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。Throwable又派生出Error类和Exception类。

1.错误:Error类以及他的子类的实例,代表了JVM本身的错误。 错误不能被程序员通过代码处理Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。

2.异常: Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。

二、java中的异常处理机制

`***`` try -定义可能发生异常的代码 (监控区域) ```

catch -用来捕捉try中发生的异常(捕获异常区域)

finally - 无论是否有异常都会执行的代码(处理善后工作)

throw - 抛出异常

throws -声明异常

处理完异常后,可以保证程序继续运行***

三.java中异常处理结构

1. try-catch 结构:

1.异常捕获代码

java异常体系结构详解
输出结果如下:
java异常体系结构详解

2.无异常捕获代码

java异常体系结构详解
输出结果
java异常体系结构详解
总结:try中监控区出现异常则运行至异常捕获区域catch进行处理,如果无异常抛出则不进行异常捕获。

2.try-catch-finally

代码如下(示例):

package dom;



public class Domr {
/**
 作者
 时间
 类的描述
 ***/

public static void main(String[] args) {
    int x=1;
    int y=1;
try {//监控区域
    System.out.println(x/0);
}catch (Throwable e){//捕获异常的区域
    System.out.println("有异常发生");

}finally {
    System.out.println("处理善后工作有没有异常都会运行");
}
}
}

输出结果
java异常体系结构详解
总结:

          1.有没有自定义异常抛出finally都会运行执行
          2.finally在一种情况下不能被执行:当执行到System.exit(1)用来强制关闭虚拟机时

finally在一种情况下不能被执行:当执行到System.exit(1)用来强制关闭虚拟机时

package dom;



public class Domr {
/**
 作者
 时间
 类的描述
 ***/

public static void main(String[] args) {
    int x=1;
    int y=1;
try {//监控区域
    System.out.println(x/y);
}catch (Throwable e){//捕获异常的区域
    System.out.println("有异常发生");

}finally {
    System.exit(1);
    System.out.println("处理善后工作有没有异常都会运行");//执行exit方法时此位置代码不执行

}
}
}

3.多重catch使用结构

1.正确代码案例

如果有多重catch时,先定义子异常,最后定义父异常(先子类后父类,从特殊到一般) 根据异常结构图分析异常类关系

public static void main(String[] args) {
    int x = 1;
    int y = 1;
    try {//监控区域
        System.out.println(x / y);
    } catch (Error erro) {//捕获异常的区域 Error异常
        System.out.println("Error");
    } catch (Exception Exception) {//Exception 异常
        System.out.println("Exception");
    } catch (Throwable Throwable) {//Throwable  异常
        System.out.println("Exception");
        
       / /异常结构由小到大进行捕获:Error-Exception -Throwable 先定义子异常后定义父异常 
    }finally{//有没有异常都执行此代码
        System.out.println("有没有异常我都会运行的\t芭比Q优");
    }
}
}
输出结果: 1 
           有没有异常我都会运行的芭比Q优

异常结构由小到大进行捕获:Error-Exception -Throwable 先定义子异常后定义父异常

2.错误代码案例

package dom;



public class Domr {
/**
 作者
 时间
 类的描述
 ***/

public static void main(String[] args) {
    int x = 1;
    int y = 1;
    try {//监控区域
        System.out.println(x / y);
    } catch (Throwable error) {//捕获异常的区域
        System.out.println("Error");
    } catch (Error Error) {
        System.out.println("Exception");
    } catch (Exception Exception) {
        System.out.println("Exception");


    }finally{
        System.out.println("有没有异常我都会运行的\t芭比Q优");
    }
}
}


输出结果
java异常体系结构详解

3.异常打印输出

package dom;



public class Domr {
/**
 作者
 时间
 类的描述
 ***/

public static void main(String[] args) {

        int x = 2;
    int y = 2;
    try {
      System.out.println(x/0);
    } catch (Exception e) {
system.exit(1);//可以终止此代码执行
        e.printStackTrace();//异常打印异常
    }


}
}


异常打印输出结果:

java.lang.ArithmeticException: / by zero
	at dom.Domr.main(Domr.java:17)

链接: https://blog.csdn.net/m0_67929156/article/details/123980271?spm=1001.2014.3001.5502.

版权声明:程序员胖胖胖虎阿 发表于 2023年8月30日 下午7:08。
转载请注明:java异常体系结构详解 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...