Java中的异常

1.异常的概述

异常:就是程序出现了不正常的情况。比如数组索引越界异常(循环length没有-1),算数异常(x/0)等等

2.异常的分类

  • Error:错误,严重问题,比如内存溢出,程序处理不了。
  • Exception:异常,程序可以处理的问题。
    • RuntimeException以及子类:运行时异常,编译阶段不会出现问题,发生在运行阶段。 比如数组越界异常(ArrayIndexOutofBoundsException)
    • 非 RuntimeException以及子类:没有继承RuntimeException,直接继承Exception是编译时异常,发生在编译阶段, 必须处理,否则程序不能通过编译,更不能正常运行了。比如日期解析异常(ParseException)

3.异常的处理

3.1. 处理方式一: JVM的默认处理(我们自己不作处理)

如果程序出现了问题,我们没有做任何处理,最终 JVM 会做默认的处理。

  • 把异常的类型,异常的描述及异常的位置等信息打印在控制台
  • 程序停止执行,异常下面的代码不会再执行了

3.2. 处理方式二:try…catch

自己处理异常,也叫做:捕获异常。

类似格式如下代码

try {
   可能出现异常的代码;
} catch(异常类名 变量名) {
   异常的处理代码;
}

好处:可以让程序继续往下执行。

3.3. 处理方式三: 抛出处理

使用throws或者throw进行异常抛出处理

throws:

写在方法声明后面,跟的是异常类名

表示声明异常,告诉方法调用者有可能会出现这样的异常。

throw:

写在方法体中,跟的是一个异常对象

表示手动抛出异常对象,告诉方法调用者出了这样的问题。

4. 异常体系常用方法

Throwable的成员方法

当我们在catch中捕获异常后,可以调用异常对象中的方法进行操作,异常中常用方法有以下3个:

  1. public String getMessage() —— 获取异常的描述信息

  2. public String toString() —— 获取异常的类型和描述信息

  3. public void printStackTrace() —— 打印异常的类型,描述信息,位置

5. 自定义异常

JDK提供的异常类虽然比较多,但是不一定符合我们的需求。

此时我们需要根据自己业务的异常情况来定义自己的异常类,比如年龄负数问题,考试成绩负数问题。

自定义异常存在的意义:就是为了让控制台的报错信息更加的见名知意。

如何定义自定义异常

  1. 定义异常类
  2. 写继承关系
  3. 空参构造
  4. 带参构造
public class MyException extends RuntimeException {
    public MyException() {    }
    public MyException(String message) {
        super(message);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值