提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Throwable为Error和Excption的父类
所有的异常类是从 java.lang.Exception 类继承的子类。
Excption表示代码运行发生异常
Error 用来指示运行时环境发生的错误
数组下标溢出异常
@Test
public void demo() {
int[] num = new int[2];
System.out.println(num[3]);
}
输出:
//异常:数组下标溢出异常
java.lang.ArrayIndexOutOfBoundsException: 3
.....
异常:除数不能为零
@Test
public void demo() {
int num = (1/0) ;
System.out.println(num);
}
输出:
//异常:除数不能为零
java.lang.ArithmeticException: / by zero
“运行时异常——即代码编译通过但是如果不修改则客户倒霉”
RunTimeException:运行时异常,又称不受检查异常,不受检查!
不受检查!!不受检查!!!重要的事情说三遍,因为不受检查,所以在代码中可能会有RunTimeException时Java编译检查时不会告诉你有这个异常,但是在实际运行代码时则会暴露出来,比如经典的1/0,空指针等。如果不处理也会被Java自己处理。
其他Exception,受检查异常。可以理解为错误,必须要开发者解决以后才能编译通过
使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。
@Test
public void demo() {
int[] num = new int[3];
try {
System.out.println(num[4]);
} catch (Exception e) {
e.printStackTrace();
}
输出:
如果catch里不打印错误信息,则可以使输出看上去编译成功,以达到捕获异常(蒙混过关)的作用;
使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的
@Test
public void kimodi() throws FileSystemAlreadyExistsException
{
try {
throw new FileSystemAlreadyExistsException();
} catch (FileSystemAlreadyExistsException e) {
e.printStackTrace();
}
}
public int sum(int a,int b) throws BBexception {
if(a>10||b>10){
throw new BBexception("没有异常你信吗");
}
else
return a+b ;
}
@Test
public void kimodi()
{
try {
int number = sum(11,0);
} catch (BBexception b) {
b.printStackTrace();
}
}
**定义ErrorCode接口 **
package com.geogle;
public interface ErrorCode {
String getCode();
String getMsg();
}
定义BbCodeEnum 枚举
package com.geogle;
public enum BbCodeEnum implements ErrorCode{
NOT_FOUND_PAGE("404","找不到网站资源"),
NOT_FOUND_FILE("886","找不到文件资源"),
;
private final String code;
private final String msg;
BbCodeEnum(String code,String msg){
this.code = code;
this.msg = msg;
}
@Override
public String getCode() {
return code;
}
@Override
public String getMsg() {
return msg;
}
}
定义一个Exception构造器
package com.geogle;
import org.junit.Test;
public class BBexception extends Exception {
public BBexception(ErrorCode errorCode) {
super(errorCode.getMsg());
}
}
测试异常
public int sum(int a,int b) throws BBexception {
if(a>10||b>10){
throw new BBexception(BbCodeEnum.NOT_FOUND_PAGE);
}
else
return a+b ;
}
@Test
public void kimodi()
{
try {
int number = sum(11,0);
} catch (BBexception b) {
b.printStackTrace();
}
}