上一次我们讲到我们需要处理的是异常是Exception.Exception分运行时异常跟检查时异常。
其实检查时异常是要强制处理的。
那么我们要关注的是运行时异常
RuntimeException。以下是常见的异常。出现这是异常往往是我们的代码错误。编译时不会错误。
NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常
出现异常,那么我们的代码块是不能被执行的。那么我们处理异常的作用是什么,我们都知道假如出现了异常,我们的程序是不能在执行下去的。
所以我们把异常处理了,这样后面的程序也是可以走下去的。即使我们处理不了异常,我们也应该告知调用者。这里出现了异常。
异常有两种的处理方式,一种是try{}catch,我们自行的把异常处理掉。另一种是直接抛异常,给方法的调用者处理。
第一种方式:自行处理。
列子:把异常处理,程序避开了异常的代码块可以往下面走
public
static
void
main(String[] args) {
//test1();
System.
out
.println(
"test"
);
try
{
int
num = 100/0;
//这里出现了异常,catch的代码块不会在往下面执行
System.
out
.println(
"出现异常"
);
}
catch
(Exception e) {
//出现了异常,程序走异常的的代码块
System.
out
.println(
"异常的代码"
);
}
//由于异常被我们处理了,那么这里的代码块也是会执行的
System.
out
.println(
"5555555555"
);
//程序输出
//test
//
异常的代码
//5555555555
}
不处理异常
public
static
void
main(String[] args) {
System.
out
.println(
"test"
);
System.
out
.println(
"异常出现前"
);
int
num = 100/0;
//上面出现了异常,由于没有处理异常。程序不能往下面走
System.
out
.println(
"出现异常"
);
System.
out
.println(
"5555555555"
);
//程序输出
//test
//异常出现前
//Exception in thread "main"
java.lang.ArithmeticException
: / by zero
at cn.gdie.Demo1.main(
Demo1.java:9
)
}
第二种:不处理,给调用者处理。这里需要注意,如果你抛出去的异常是运行时异常。那么调用者调用方法的时候不用强行处理。
public static void main(String[] args) {
try {
test1();
} catch (Exception e) {
e.printStackTrace();
System.out.println("出现异常");
}
//代码输入
// 异常前
//java.lang.ArithmeticException: / by zero
//at cn.gdie.Demo4.test1(Demo4.java:16)
//at cn.gdie.Demo4.main(Demo4.java:7)
//出现异常
public static void test1()throws Exception{
System.out.println("异常前");
int num = 100/0;
System.out.println("异常后");
}