第五章 5.1 异常

异常概述

异常继承结构

异常继承结构图

RuntimeException(运行时异常)为自己编译可能出错:空指针异常,数组下标越界

其余的(XXException)为外界条件出错:文件找不到、类可能被删除

异常的发生

自定义异常

自定义异常灵感来源于源码:

NullPointerException继承了RunTimeException,一个无参构造,一个有参构造

自定义异常

自定义异常练习

代码

/*
程序主入口
 */
public class Exception01 {
    public static void main(String[] args) throws IllegalNameException, IllegalAgeException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("欢迎本系统,请注册:");
        System.out.print("请输入用户名:");
        String name = scanner.next();
        System.out.print("请输入年龄:");
        int age = scanner.nextInt();

        //注册
        UserService userService = new UserService();
        userService.register(name,age);//这里的代码可能出现异常,
                    register方法throws了,交给了调用者main解决


    }
}
//用户业务类
class UserService{
    public void register(String name,int age) throws IllegalNameException, IllegalAgeException {
        System.out.println("正在注册请稍后...");
        UserDao userDao = new UserDao();
        userDao.save(name,age); //这里的代码可能出现异常,
                save方法throws了,交给了调用者register解决
        System.out.println("注册成功"+ name);
    }
}

//操作数据库的类
class UserDao{
    public void save(String name,int age) throws IllegalNameException, IllegalAgeException {
        System.out.println("用户["+name+"]"+"的信息正在保存");
        if(name.length()<6 || name.length()>12){
            throw new IllegalNameException(name);
        }
        if(age<18){
            throw new IllegalAgeException(age);
        }
    }
}

异常的处理

代码:

try一般常用于main方法主界面,因为如果主界面在throw异常,就交给了jvm处理,程序就终止了。

异常的常用方法

getMessage():

printStackTrace():打印栈追踪信息

save→resister→main:最后调的save,存储在栈顶

52行出了问题导致43行再导致20行出了问题。

打印的是红色字体

finally语句块

方法覆盖于异常 

Exception比上边两个异常范围更大,所以不能抛出,编译错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值