异常

异常处理

什么是异常

身体上的异常: 生病

代码中的异常:
ArrayIndexOutOfBoundsException 数组下标越界异常
NullPointerException 空指针异常
ClassNotFoundException 类不存在异常
SQLException 数据库语句异常

BUG:
程序运行过程中一些不可预知的情况!!!

错误和异常都是有前因后果的

Throwable类

Throwablejava 中所有错误(Error)和异常(Exception)的超类。

错误和异常的区别:
Error: 错误,只能避免不能处理。
Exception: 异常,可以处理。

Constructor(构造方法)
Throwable(); 创建一个 Throwable 类对象,并且在 Throwable 类内的异常信息为null

Throwable(String message); 创建一个 Throwable 类对象,使用message 字符串作为异常信息。

Method(方法):
String getMessage();获取异常信息;
String toString();返回当前异常的简要描述字符串;
void printStackTrace();展示异常或者错误的前因后果。

捕获异常

两种结构

try - catch
try - catch - finally

格式
try {
	有可能出现异常的代码
} catch (异常对象) {
	针对当前异常对象的处理方式
} catch (异常对象) {
	针对当前异常的处理方式
}

try - catch 使用注意事项:
	1try 语句块中是有可能出现异常的代码
	2catch 之后小括号里面的内容,是需要捕获的异常对象。大括号里面的内容是处理方式。
	3、java代码中的异常如果被 try - catch 捕获处理,JVM就会认为代码没有异常,继续运行。
	4、可以使用多个 catch 块来捕获不同的异常,异常按照各自的情况分门别类处理。
	5catch Exception 是可以处理任何异常,但是这样的方式会导致代码中的异常处理单一化,无法做到分门别类处理!
抛出异常

使用到的关键字:
throw: 用于在方法中抛出异常
throws: 用于在方法声明位置告知调用者,当前方法抛出的异常类型有哪些。

throw 和 throws 使用注意事项:

1、throw 抛出异常,从抛出异常位置开始,代码终止运行。
2、在同一个代码块内,不能抛出两个异常,如果有多个异常抛出,需要在不同的代码块中抛出
3、如果代码中抛出了异常,要求在方法的声明位置使用 throws 告知调用者,这里有异常抛出需要处理。如果存在多个异常抛出,不同的异常使用 ,(逗号) 隔开。
4、调用一个带有抛出异常的方法,需要处理当前方法的异常有两种,继续抛出或者捕获。

原则:
底层代码只要不涉及到用户界面,可以任意抛
但是一旦涉及到用户界面,必须捕获!!

自定义异常

Java提供了大量的异常,但是还是无法满足实际的生活情况!!!
生活逻辑上的一些异常,无法使用Java中本来的异常完美的解释!!!
自定义异常格式

class 自定义异常格式 extends Exception {
	构造方法
	无参数构造方法和带有一个String message 异常信息构造方法
}

自定义异常示例:

class StaticPersonException extends Exception {

	/**
	* 静态人士异常
	*/
    public StaticPersonException() {}

    public StaticPersonException(String message) {
        super(message);
    }
    /*
    后期成员方法可以完成对于异常其它处理
    例如:
        记录日志文件,通过网络发送异常,转换其他方式...
     */
}

public class Demo6 {
    public static void main(String[] args) throws StaticPersonException {
        buyOneFreeOne(false);
    }

    /**
     * 买一送一
     * @param isSingleDog boolean 是不是静态人士
     * @throws StaticPersonException 静态人士异常
     */
    public static void buyOneFreeOne(boolean isSingleDog) throws StaticPersonException {
        if (isSingleDog) {
            throw new StaticPersonException("路见不平一声吼");
        }

        System.out.println("xxxxx");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值