0
点赞
收藏
分享

微信扫一扫

Java中异常处理机制~(2022.4.27)

彪悍的鼹鼠 2022-04-27 阅读 53
java
  • 抛出异常
  • 捕获异常
  • 处理异常的五个关键字:
    • try、catch、finally、throw、throws
    package com.exception;
    public class Test1 {
        public static void main(String[] args) {
            int a = 10;
            int b = 0;
            try{  // 监控区域
                System.out.println(a/b);
            }catch (Throwable e){  // catch(想要捕获的异常类型)是捕获异常 Throwable:
                System.out.println("小翟的程序出现异常啦!别灰心每一次的异常只会让你变得更强!");
            }
            finally {   // 处理善后工作
                System.out.println("finally:不管出不出异常都会执行!");
            }
            try {
                System.out.println(a/b);
            } catch (Exception e) {
                System.exit(1);  // 结束程序
            }
        }
    }
    输出:
          小翟的程序出现异常啦!别灰心每一次的异常只会让你变得更强!
          finally:不管出不出异常都会执行!
    
    package com.exception;
    public class Test2 {
        public static void main(String[] args) throws Exception { //throws使用在方法上,抛出异常
            new Test2().add(1,0);
        }
    
        public int add(int a,int b){
            if(b==0){
                throw new ArithmeticException();    // throw用在方法中,主动抛出异常
            }
            return a/b;
        }
    }
    输出:
        Exception in thread "main" java.lang.ArithmeticException
            at com.exception.Test2.add(Test2.java:10)
            at com.exception.Test2.main(Test2.java:5)

try:监控要出错的代码
catch():参数:要抛出异常的类型,进行抛出异常
finally:始终的,不管上面执行的怎么样,finally中的代码必须执行。
throw:用在方法中主动抛出异常。
throws:用在方法上抛出异常

  • 使用Java内置的异常类是可以描述在编程时出现大部分异常情况;除此之外,用户还可以自定义异常。用户自定义异常类,只需要继承Exception即可。

1、创建自定义异常类.

2、在方法中通过throw关键字抛出异常对象.

3、如果在当前抛出异常的方法中处理异常,可以使用 try-catch 语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作.

4、再出现异常方法的调用这中捕获并处理异常。

    package com.exception;
    // 自定义异常类:需要继承 Exception
    public class MyException extends Exception {
        // 定义变量,用于传数字
        private final int exe;
        // 使用有参构造进行传值
        public MyException(int exe) {
            this.exe = exe;
        }
        // 使用 toString方法进行打印输出
        @Override
        public String toString() {
            return "MyException{" + "您的分数为:" + exe + '}';
        }
    }
    
    package com.exception;
    // 测试类
    public class TestException { 
        public static void exception(int a) throws MyException {
            // 判断传入的参数是否小于60
            if (a<60){  // 如果小于60
                System.out.println("你传递的分数为:"+a);  // 则输出当前的成绩
                throw new MyException(a);  // 主动抛出异常
            }
            System.out.println("您的分数合格,请进入下一轮考试!");
        }
    
        public static void main(String[] args) {
            try {
                exception(59);
            } catch (MyException e) {
                System.out.println("您的分数不合格!即将取消考试资格:"+e);
             	System.exit(0);  // 结束程序
            }
        }
    }
    输出1:
          你传递的分数为:59
          您的分数不合格!即将取消考试资格:MyException{您的分数为:59}
    输出2:
    	 您的分数合格,请进入下一轮考试!
  • 处理运行时异常时,采取逻辑去合理规避同时辅助 try-catch 来处理
  • 在多重 catch 块后面,可以加一个 catch (Exception) 来处理可能会被遗漏的异常
  • 对于不确定的代码,也可以加上 try-catch ,处理潜在的异常
  • 尽量去处理异常,切记只是简单的调用 prinkStackTrace()去打印输出
  • 具体如何处理异常,要根据不同的业务需求和异常类型去决定
  • 尽量添加 finally 语句块去释放占用资源
举报

相关推荐

0 条评论