错误:Error 错误是处理不了了,因为它往往是系统层面上的
一.异常:
1.异常的分类:
1.1运行时异常:
程序执行期间抛出的异常 , 不强制理解处理。凡RuntimeException 及其子类都是运行时异常。
1.2检查异常:
编译时出现的异常 ,必须立即处理,否则编译不过,除了运行时异常意外的其他异常都是检查异常
常见的异常:
空指针异常 NullPointException
数组下标越界异常 ArrayIndexOutBounds
类型转换异常 ClassCasException
类找不到异常 ClassNotFoundException
2.异常的处理
2.1 捕获处理
对于检查性异常,通过 try catch finally 关键字 实现<br /> try{ } <br /> 尝试捕获,把可能出现异常的代码放入其中 [ 必须的 ]<br /> catch( 异常类型 e ){ } <br /> 捕获到异常,在这里可以做异常的修复处理[ 可以有多个,如果是运行异常可以没有,那也就处理不了异常了]<br /> finally{ } <br /> 始终执行的语句块,无论是否真的触发异常它都要执行。[ 可以选 ] <br /> <br /> **细节:**<br />** 如果出现多个catch 必须 子异常再前 父异常在后**<br />** 如果出现多个catch 也可简化成 使用一个最大异常来捕获**
2.2 异常抛出
声明异常抛出的方式处理异常,利用一个 throws 关键字 。在方法的签名出添加 异常声明。<br /> 细节 : 声明的异常必须与待处理异常类型相同或更大。如果内部待处理异常有多个,也可以声明多个,<br /> 有时候为了简洁也可以抛出最大的异常比如Exception。<br /> 子类重写父类或者实现类重写接口中的方法,必须不能抛出比上级更大的异常。<br /> 语法 : .... xxxx() throws 异常类名1,异常类名N
3. 自定义异常
3.1 理解自定义异常
Java 提供了不同的异常类,不同异常类是为了描述不同的意外情况。在实际开发中,有一些业务上的意外情况,
没有现有的异常类来描述。比如 转账,转账金额超了余额,
可以使用一个比如 MoneyTooLessException。自定义异常一般都是服务于业务逻辑的异常。一旦违背了业务规范则抛出自定义异常。
体会: 使用自定义异常体现了 规范性 以及可以实现代码解耦合( 异常的产生 和处理分开 )
3.2实现自定义异常:
需要自己编写一个类 去继承 Exception , 意味着我们这个类是一个检查异常。
如果继承RuntimeException 就意味着这类是一个运行时异常。
class myException extends Exception{
private int num;
public myException(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return "myException{" +
"num=" + num +"超出异常"+
'}';
}
}
3.3 使用自定义异常:
/
常用方法:
String String getMessage(); 返回异常描述
void printStackTrace(); 返回跟踪程序跟踪记录
String toString(); 包含一个异常描述的String对象
/
try {
TestException(110);
} catch (myException e) {
System.out.println("");
e.printStackTrace();
}
public static void TestException(int num) throws myException {
if(num>100)throw new myException(num);
}