Java之异常Throwable

这篇博客探讨了Java中的异常处理,重点在于自定义异常。文章通过一个示例展示了如何创建并使用`AgeException`,该异常在用户尝试设置非法年龄时抛出。异常处理的语法包括`try-catch-finally`块的使用,以及`throw`和`throws`关键字的区别。此外,还介绍了编译时异常和运行时异常的处理策略。
摘要由CSDN通过智能技术生成

异常Throwable


在这里插入图片描述
自定义异常案例:

package com.week03.Day01;
/*
*总结:异常:Throwable
*           /     \
*       Error     Exception
*                   /    \
*       CheckException    RuntimeException
* 编译时异常:1、直接抛出异常,由调用者处理异常
*           2、直接catch捕获异常,处理掉异常
*
* 运行时异常:1、直接抛出异常,由调用者处理异常
*           2、直接catch捕获异常,处理掉异常
*           3、编写健壮性代码,完善程序
*
* throw 和 throws 的区别:throw:制造异常
*                       throws:抛出异常
*
* 捕获异常格式:try{
*               可能出现异常的代码
*            }catch(异常类型 变量){
*               处理异常/变量名.printStackTrace()
*           }finally{
*               无论是否存在异常必定执行(return 也阻拦不了)
*           }
*
* 自定义异常:编译自定异常时:extends Exception(父类,不继承CheckException是因为无这个类新的异常)
*           运行自定异常时:extends RuntimeException(父类)
*
* */
public class Demo02 {
    public static void main(String[] args)  {
        User u=new User();
       // u.setAge(-10);
        try {
            u.setAge(-10);
        } catch (AgeException e) {
            try {
                u.setAge(20);
            } catch (AgeException ex) {
                ex.printStackTrace();
            }
        }
        u.setName("张三");
        System.out.println(u.toString());
    }
}

//class AgeException extends RuntimeException{

class AgeException extends Exception{
    public AgeException(){

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

class User{
    private int age;
    private String name;

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "User{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    public void setAge(int age) throws AgeException {
        if(age<18 || age>50) {
            throw new AgeException(age + "不合法");
        }
        this.age=age;
    }

    public User() {
    }

    public String getName() {
        return name;
    }

    public User(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

每日小新

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

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

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

打赏作者

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

抵扣说明:

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

余额充值