java面向对象day6-异常

异常

异常的定义:异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

异常处理
Java编程语言使用异常处理机制为程序提供了错误处理的能力

异常处理的流程:首先在程序中与预先设置好对付异常的处理办法,然后运行程序,等到程序出现异常,对异常进行处理,最后处理完毕,程序继续运行

5个关键字实现异常处理:
  try:执行可能产生异常的代码
  catch:捕获异常
  finally:无论是否发生异常,代码总能执行
  throws:声明方法可能要抛出的各种异常
  throw:手动抛出异常

异常处理的三种情况
1、程序未发生异常,try块走完,不进入catch块,进入finally块,同时继续向下运行。
2、程序发生异常并捕获,try块走到发生异常的位置后,进入catch块,进入finally块,同时继续向下运行。
3、程序发生异常但未捕获,try块走到发生异常的位置后,进入finally块,同时不会继续向下运行。

异常对象常用的方法:
void printStackTrace():输出异常的堆栈信息
String getMessage():返回异常信息描述字符串,是printStackTrace()输出信息的一部分

常见的异常类型:
在这里插入图片描述
异常分为Checked异常运行时异常:
  Checked异常必须捕获或者声明抛出
  运行时异常不要求必须捕获或者声明抛出

多重catch块
  引发多种类型的异常
    排列catch 语句的顺序:先子类后父类
    发生异常时按顺序逐个匹配
    只执行第一个与异常类型匹配的catch语句

声明异常

throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开
  方式1:调用者处理异常
  方式2:调用者继续声明异常
    main()方法声明的异常由Java虚拟机处理

抛出异常
除了系统自动抛出异常外,有些问题需要程序员自行抛出异常
  使用throw抛出异常
  throw与throws
在这里插入图片描述
自定义异常
当JDK 中的异常类型不能满足程序的需要时,可以自定义异常类

使用自定义异常的步骤:
1、定义异常类(继承Throwable类、继承Excepion 或者RuntimeException)
2、编写构造方法,继承父类的实现
3、实例化自定义异常对象
4、使用throw抛出

举例:自定义异常

public class WrongAgeException extends RuntimeException{
    public WrongAgeException(String message){
        super(message);
    }
}
class User{
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age>100||age<0){
            throw new WrongAgeException("当前年龄输入错误,正确的是0~100");
        }
        this.age = age;
    }

    public static void main(String[] args) {
        User u=new User();
        u.setAge(180);
        System.out.println(u.getAge());
    }
}

结果如图:
在这里插入图片描述
因为代码中设置了年龄只能在0到100之间,如果超过了这个范围,就会抛出异常。


异常处理原则
  异常处理与性能
  异常只能用于非正常情况
  不要将过于庞大的代码块放在try中
  在catch中指定具体的异常类型
  需要对捕获的异常做处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值