Java异常处理与自定义异常

目录

一、API

二、异常

三、自定义异常


一、API

1.application programming interface:应用程序接口;

2.API是一堆已经写好的Java代码;

3.API中一些包的分类:

(1)java.lang:语言包,最基础的包;

  • lang包的类是不需要导入的;

(2)java.util:集合框架,帮助类;

(3)java.io:文件操作的包;

(4)javax.swing 和 javax.awt:Java的图形化界面;

(5)java.sql:用来链接数据库的包;

(6)java.net:用来堆网络进行操作的包;

二、异常

1.异常和bug是不同的,异常是可能会出现问题的代码,bug是漏洞;

2.异常的问题总共有三种:

(1)编译器异常:以后自己解决的;

(2)运行期异常:这个是发生最多的,也是自己解决;

(3)逻辑异常:这个要使用自定义异常解决,是最难解决的;

3.异常的语法:

(1)try{可能会出现异常的代码}catch(异常类型 名字){出现异常后要处理异常的代码}finally{不管有没有出现异常,这里的代码都会执行}

(2)catch语句可以有多个;

(3)在处理异常的时候,一般直接使用 名字.printStackTrace();就不用管了;

public class Demo {
    public static void main(String[] args) throws ArithmeticException {
        Scanner sc = new Scanner(System.in);
        try {// 有可能出现异常的代码
            System.out.println("请输入第一个整数:");
            int num1 = sc.nextInt();
            System.out.println("请输入第二个整数:");
            int num2 = sc.nextInt();
            int result = num1 / num2;
            System.out.println("num1 / num2 = " + result);
        }catch (ArithmeticException e){
            // 处理异常的代码
            e.printStackTrace();
//            System.out.println(e.getMessage());
//            System.err.println(e.getMessage());
        }catch (InputMismatchException e){
            e.printStackTrace();
        }catch (Exception e){
            e.printStackTrace(); // 不建议直接使用Exception
        }finally {
            System.out.println("hello world"); // finally中的代码,不管有没有异常都会执行
        }
        System.out.println("over");
}

(4)为什么要处理异常:

  • 保证程序能够完整的执行完毕;
  • 保证程序的健壮性;

(5)异常名字.printStackTrace():查看异常的类型以及异常出现的位置;

(6)异常名字.getMessage():简单显示异常的信息,不会显示异常出现的位置;

(7)对于异常,我们应当将其作为一个流程的跳转;

4.异常的体系:

(1)Throwable 下面有Error和Exception两个实现类;

(2)Exception 下面有RunTimeException和一般异常;

  • 注意:一般异常是必须要捕获的

5.RunTimeException常见的异常:

(1)ArrayIndexOutOfBoundsException:数组下标越界

(2)NullPointerException:空指针异常

(3)InputMismatchException:输入不匹配异常

(4)ArithmeticException:算术异常

(5)NumberFormatException:数组格式异常

(6)ClassCastException:类异常

(7)ClassNotFoundException:类未建立异常

6.抛出异常:

(1)关键字:throws和throw

(2)throws是抛出异常,throw是手动抛出异常

(3)格式:

// 自定义异常
public class AgeException extends Exception {
    public AgeException() {
    }

    public AgeException(String message) {
        super(message);
    }
}

public class Student {
    private int sage;

    public int getSage() {
        return sage;
    }

    public void setSage(int sage) throws AgeException { // 抛出异常
        if(sage < 0 || sage > 150){
            AgeException ageException = new AgeException("年龄只能在0~150之间");
            throw ageException; // 手动抛出异常
        }else {
            this.sage = sage;
        }
    }
}

(4)异常一但抛出,就需要在调用的时候去处理这个异常;

7.异常捕获可以嵌套

8.如果遇到异常,可以先查看API文档,找到异常的类型以及位置,再去解决这个异常

三、自定义异常

1.创建一个自定义异常需要继承Exception类

2.生成构造方法

// 自定义异常
public class AgeException extends Exception {
    public AgeException() {
    }

    public AgeException(String message) {
        super(message);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

所愿ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值