异常机制、处理,自定义异常类

快来打我* 2023-10-13 13:49 170阅读 0赞

异常分类

  • 检查异常:代表是用户错误或者问题引起的异常,在编译时不能简单的被忽略。
  • 运行异常:可能被程序员忽略的异常,在编译时可以被忽略
  • 错误:错误不是异常,是脱离程序员控制的问题,错误在代码中经常被忽略

错误

在这里插入图片描述

Exception异常

在这里插入图片描述

异常处理机制

异常处理的关键字

  • try:尝试处理异常
  • catch:捕获异常
  • finally:不管是否捕获处理异常都执行
  • throw:抛出
  • throws:抛出

异常处理实例

  • 没有经过try和catch捕捉的异常,在程序运行到该位置时,程序会中断运行,经过处理后的异常会通过catch进行捕捉,进而执行catch对应的代码,避免因为异常导致程序中断执行。
  • 多重catch对异常进行捕捉需要根据异常类型的大小从小到大的捕捉。
  • 异常处理代码:

    package com.oop.Demo06;

    public class Exception1 {

    1. public static void main(String[] args) {
    2. int a=1,b=0;
    3. try {
    4. //对接下来这带try这个代码片中的代码进行监控。
    5. System.out.println("还行"+a/b);
    6. }
    7. //catch(异常处理类型 e){处理的方法体}
    8. catch (Exception e){
    9. System.out.println("b为除数不能为0");
    10. }catch (Throwable t){
    11. System.out.println("异常类型在Throwable中没在Exception中");
    12. }
    13. finally {
    14. System.out.println("执行力finally");
    15. }
    16. }

    }

  • 异常的抛出

    package com.oop.Demo06;

    public class Exception1 {

    1. public static void main(String[] args) {
    2. new Exception1().test(1,1);
    3. //解决抛出的异常
    4. try {
    5. new Exception1().test1(1,0);
    6. } catch (ArithmeticException e) {
    7. e.printStackTrace();
    8. System.out.println("这里是抛出的异常");
    9. }
    10. }
    11. public void test(int a,int b){
    12. if (b==0){
    13. throw new ArithmeticException();//在方法中主动将异常抛出
    14. }else
    15. System.out.println(a/b);
    16. }
    17. //假设在方法中无法处理异常,就将异常进行抛出在try,catch中解决异常。
    18. public void test1(int a,int b) throws ArithmeticException{
    19. if (b==0){
    20. throw new ArithmeticException();//在方法中主动将异常抛出
    21. }else
    22. System.out.println(a/b);
    23. }
  1. }

自定义异常类

  • 自定义异常类实际就是继承了exception的类
  • 多的不说,少的不唠,直接示例代码:
  1. 自定义异常类MyException:

    package com.oop.Demo06;

    /**

    • 自定义异常类,实际就是对exception进行了继承的类
      */
      public class MyException extends Exception{

      private int de;

      public MyException(int de) {

      1. this.de = de;

      }
      //通过toString对结果进行打印,这里的结果是调用自定义异常类的类所传递的值

      @Override
      public String toString() {

      1. return "MyException{" +
      2. "de=" + de +
      3. '}';

      }
      }

  2. MyExceptionTest测试类:

    package com.oop.Demo06;

    public class MyExceptionTest {

    1. static void test(int a) throws MyException {
    2. System.out.println("传递的参数为"+a);
    3. if(a>10){
    4. throw new MyException(a);//这可以选择使用throws对异常进行抛出或者使用try,catch对异常进行捕捉。
    5. }
    6. System.out.println("ok");
    7. }
    8. //测试程序对test方法调用并验证自定义函数是否正确
    9. public static void main(String[] args) {
    10. try {
    11. test(11);
    12. } catch (MyException e) {
    13. System.out.println("MyException=>"+e);
    14. //这里的e是在自定义函数中的ToString函数中所输出的值
    15. }
    16. }

    }

发表评论

表情:
评论列表 (有 0 条评论,170人围观)

还没有评论,来说两句吧...

相关阅读