java笔记之异常

总结自 韩顺平 零基础30天学java


一、异常的概念

异常:将程序执行时发生的不正常的情况称为异常。
出现异常后,程序会抛出异常,然后程序会直接退出,不向下执行了。
这样的程序健壮性不好,程序稍微有一点点错误就不能向下执行了。
解决方式:捕获异常。
异常可分为两大类:error(错误)和Exception(异常)
(1)error:如内存不足,栈溢出等JVM无法处理的严重问题。
(2)Exception:因编程错误或偶然的外界因素导致的问题。如数据格式错误,空指针异常等。
Exception也可分为两类:1.运行时异常RuntimeException2.编译时异常。
(1)运行时异常:即在运行时才检测的异常。
(2)编译时异常:在编译时由编译器检查出的异常。

二、异常体系图(重点)

在这里插入图片描述

三、常见异常

常见的运行时异常

(1)NullPointerException(空指针异常)
(2)ArithmeticException(数学运算异常)如除0操作
(3)ArrayIndexOutOfBoundsException(数组下标越界异常)
(4)ClassCastException(类型转换异常)如将文字字符串转成int
(5)NumberFormatException(数字格式不正确异常)

常见编译时发生的异常

一般为访问某些资源(文件、数据库)时发生的异常。
(1)SQLException 操作数据库,查询表时出现的异常
(2)IOException 操作文件时发生的异常
(3)FileNotFoundException 操作一个不存在的文件时发生的异常
(4)ClassNotFoundException 在加载类,该类不存在时发生的异常
(5)EOFException 操作文件到文件末尾发生的异常
(6)ILLegalArguementException 参数异常

四、异常处理的概念

异常处理:当异常发生后,对异常进行的操作。
异常处理的方式
1.try-catch-finally:里面捕获发生的异常,然后程序员自行处理。
2.throws:抛出异常。(当异常发生后,交给调用者(方法)来处理,最顶级的调用者就是JVM机)
1.try-catch-finally:

try{
1将可能有异常的代码放到try中去,如果出现异常,就将异常信息封装成Exception的一个对象作为实参,传入到catch里面去。
}catch(Exception e){
2.catch中得到异常后,程序员可以自选决定要进行的操作。

}finally{
3.Finally中是必须执行的,不管异常有没有发生
}

需注意:
若try中有异常就到catch中,若没有异常就不进入catch。
finally中的代码块是必须执行的。
2.throws:
这里的异常可以是多个异常,也可以是该异常的父类

  1. 编译异常必须处理(显式去处理):要么try-catch,要么向调用者抛出。
  2. 运行异常,默认throws
  3. 子类重写父类方法,子类抛出异常是父类抛出异常的子类

对于运行时异常,若一直向上抛则最终交给JVM机。

五、自定义异常

当程序中出现了某些错误,但该错误信息没有在Throwable子类中描述处理。这时便可以自己设计异常类,用于描述该错误信息。
自定义异常的步骤:
1.定义类 class 类名
2.继承一个异常类.

如果继承的是RuntimaException,则是运行时异常,否则则是编译时异常。

如:

//定义自定义异常
class A extends RuntimeException {
    public A(String message) {
        super(message);
        //可对super进行追溯,查找上一级。
    }
}

public class CustomException {
    public static void main(String[] args){
        int age = 350;
        if (!(age >= 18 && age <= 190)) {
            //throw在方法体中,表明要扔出一个具体的异常对象,需手动生成异常。
            throw new A("年龄需要在18-190之间");
        }
        System.out.println("年龄范围正确");
    }
}

七、throw和throws

throw在方法体中使用,用于手动抛出一个异常对象。
throws在方法声明时使用,用于表示抛出异常的类型。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值