异常

异常

异常的定义:

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

Java通 过Throwable类的众多子类描述各种不同的异常。Java异常是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。

异常的结构

Throwable:有Error和Exception两个子类,各自包含大量子类。
Error:错误

Exception:异常
确定会发生异常的情况:
Checked异常:提前处理
不确定:
运行期异常:RuntimeException:遇到再处理

常见的异常类型:

        算数异常:ArithmeticException
		空指针异常:NullPointException
		数组越界异常:ArraysIndexOutOfBoundsException
		索引越界异常:IndexOutOfBoundsException
		类型装换异常:ClassCastException
		输入类型类型不匹配:InputMismatchException
		输入输出异常:IOException
		SQL异常:SQlException
		非法参数异常:IllegalArgumentException
		数字格式化异常:NumberFormatException
		未找到类的异常:ClassNotFoundException

异常处理:

在 Java 应用程序中,异常处理通过5个关键字来实现:
try、catch、finally、throw、throws
在这里插入图片描述

try{
	有可能发生问题的代码块;
	}catch(有可能发生的异常类型 e){
		对异常信息查看的操作
	}finally{
		必定会运行的代码
	}

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

抛出异常:

throw的使用:
throw总是出现在函数体中,用来抛出一个Throwable类型的异常

throw的
throws的用法:
如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。

throw和throws

throw:抛出,手动产生异常
	必须在条件语句内
	
throws:声明该方法未处理的异常
	RuntimeException:不一定要处理
	Exception:一定要处理

练习:使用throw抛出年龄异常
在setAge(int age) 中对年龄进行判断,如果年龄介于1到100直接赋值,否则抛出异常
在测试类中创建对象并调用setAge(int age)方法,使用try-catch捕获并处理异常
在这里插入图片描述

public class Age {
    private String name;
    private  int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age)throws AgeException {
        if(age>=0 && age<=100){
            this.age = age;
        }else{
            throw new AgeException("年龄必须在1到100之间!");
        }

    }
    public void print(){
        System.out.println(this.name+"今年"+this.age+"岁");
    }

    public static void main(String[] args) {
        Age age = new Age();
        age.setName("张三");
        try {
            age.setAge(-1);
            age.print();
        }catch (AgeException e){
            e.printStackTrace();
        }
    }
}

public class AgeException extends Exception{
    public AgeException(){
    }

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

在这里插入图片描述

自定义异常

当JDK 中的异常类型不能满足程序的需要时,可以自定义异常类

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值