ToB企服应用市场:ToB评测及商务社交产业平台

标题: java异常处理 [打印本页]

作者: 王海鱼    时间: 2022-8-27 16:36
标题: java异常处理
捕获和抛出异常

异常处理的五大关键字:try,catch,finally,throw,throws

目录

1.捕获异常

用法:
​                                try{可能会出现异常的代码
​                                   } catch(Exception e)//catch后面跟想要捕获的异常类型
​                                                                        {异常的处理逻辑}
idea快捷键:ctrl+alt+t
eclipse快捷键alt+shift+z
代码示例:
  1. public class Test1 {
  2.     public static void main(String[] args) {
  3.         int a=1;
  4.         int b=0;
  5.         
  6.         try {
  7.             //快捷键ctrl+ait+t选择try
  8.             System.out.println(a/b);
  9.         } catch (ArithmeticException e) {
  10.             System.out.println("算术异常");;
  11.         } finally {
  12.             System.out.println("无论程序是否捕获到异常都会被执行");
  13.         }
  14.     }
  15. }
复制代码
输出:
  1. 算术异常
  2. 无论程序是否捕获到异常都会被执行
复制代码
2.抛出异常

​                通过throws关键字声明抛出这个异常,交给方法的调用者去处理,在这里main方法的调用者是JVM,即交给JVM去处理。
throw与throws

throws:     跟在方法声明后面,后面跟的是异常类名
throw:    用在方法体内,后面跟的是异常类对象名
throws:     throws表示有出现异常的可能性,并不一定出现这些异常
throw:    throw则是抛出了异常,执行throw一定出现了某种异常
throws:     表示抛出异常,由该方法的调用者来处理
throw:    表示抛出异常,由该方法体内的语句来处理
throws:后面可以跟多个异常。用逗号(,)隔开
throw:只能抛出一个异常对象名
代码示例:
  1. public class Demo02 {
  2.     //throws后面可以跟多个异常。用逗号(,)隔开
  3.     public static void main(String[] args) throws Exception {
  4.             Demo02 d=new Demo02();
  5.             d.division(5.0,0.0);
  6.     }
  7.     public void division(double x,double y) throws ArithmeticException{//throws后面跟异常类
  8.         double num=x/y;
  9.         if (y==0) {
  10.             throw new ArithmeticException("算术异常");//后面跟异常对象名
  11.         } else {
  12.             System.out.println(num);
  13.         }
  14.     }
  15.     }
复制代码
输出:
  1. Exception in thread "main" java.lang.ArithmeticException: 算术异常
  2.         at com.exception.Demo02.division(Demo02.java:11)
  3.         at com.exception.Demo02.main(Demo02.java:6)
复制代码
可以看到当if成立时,会抛出异常,也就是throw才会执行。而当没异常的时候则不会执行!
3.两种处理方式的区别

4.自定义异常

在java中除了,java中给我们定义的异常之外,我们还可以自定义异常。
如何自定义异常:

在进行程序开发的过程中,自定义异常遵循以下四个步骤:
1.首先创建自定义异常类,语法格式:自定义异常类名 extends Exception。
2.在方法中通过关键字throw抛出异常对象。
3.若是在当前抛出异常的方法中处理异常,可以用try-catch语句捕获并处理;若不是,在方法的声明处通过关键字throws指明要抛出给方法调用的异常。
4.在出现异常方法的调用中捕获并理异常
eg:定义一个大于10就会从抛出的异常
  1. //自定义异常类
  2. public class CustomizeException extends Exception{
  3.     private int a;
  4.     public CustomizeException(int a) {
  5.         this.a = a;
  6.     }
  7.     //toString:异常的打印信息
  8.     @Override
  9.     public String toString() {
  10.         return "CustomizeException{"+a+'}';
  11.     }
  12. }
复制代码
然后书写一个测试类,里面放可能会存在异常的方法
  1. package com.exception;
  2. public class TestCustomizeException {
  3.     //定义一个可能会存在异常的方法
  4.     static void test(int a) throws CustomizeException {
  5.         System.out.println("传递的参数为"+a);
  6.         if (a>10){
  7.             throw new CustomizeException(a);
  8.         }
  9.         System.out.println("ok");
  10.     }
  11.     public static void main(String[] args) {
  12.         try {
  13.             test(11);
  14.         } catch (CustomizeException e) {
  15.             System.out.println("CustomizeException=>"+e);;
  16.         }
  17.     }
  18. }
复制代码
输出:
  1. 传递的参数为11
  2. CustomizeException=>CustomizeException{11}
复制代码
这就是自定义异常
自定义异常在实际应用中的经验总结


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4