Throwable:是所有错误和异常的基类
所以,我们作为程序员,处理的异常一般都是运行时异常
=========================================================
异常处理方式:
一、捕获:try-catch(在方法体内)
try {
//可能发生异常的代码
} catch (Exception e) {
//针对异常出现后,要进行的操作
}finally {
//一定会执行的代码,一般是关闭流、数据库连接等
}
注意事项:
1、子类异常在上面,父类异常在下面,平级异常顺序无所谓
2、不要用Exception处理全部,尽量细化异常处理方式,因为不同的异常可能要进行不同的处理
二、抛出:throws(在方法上)
向外再抛出给调用者(谁调用谁处理),为了给调用者(其他程序员)一个提示
语法:通过throws关键字,用在方法()后{}前,多个异常逗号隔开,顺序无所谓。
===============================================================
自定义异常:命名XxxException
问:为什么要自定义异常
因为项目中会有各种各样的场景和需求,所以就会有各种各样的异常,JDK不可能把所有情况的异常都写出来,所以根据实际业务需求来自定义异常
设计步骤:
public class NameReapeatException extends Exception {
/**
* 点击类名,选择第二个,就会自动生成序列化号
*/
private static final long serialVersionUID = -5844378185908159486L;
/**
* alt+shift+s,选从超类生成构造函数
*/
public NameReapeatException() {
super();
}
public NameReapeatException(String message) {
super(message);
}
}
使用方式:
//使用try-catch捕获
try {
//可能发生异常的代码
} catch (NameReapeatException e) {//直接把异常类名写这里
//针对异常出现后,要进行的操作
}catch (Exception e) {
}finally {
//一定会执行的代码,一般是关闭流、数据库连接等
}
//throw
//1、写在方法()后:throws NameReapeatException
//2、throw new 异常类名
if (arr1 == null || arr2 == null) {
//抛出异常,提醒调用者不能写空值
throw new IllegalArgumentException("传入的数组为null!!!");
}
============================================================