异常
相比大家写了这么久代码,控制台出现异常的次数不会少了吧。今天我们就来看看异常。
首先,什么是异常呢。
Java异常是Java提供的一种识别及响应错误的一致性机制。就是会出现各种奇奇怪怪的红字终止了你的程序。
我们来看看异常的划分
Throwable(所有异常的父类)
--Error(数据库崩溃 系统崩溃)
--Exception(异常类)
--RuntimeException(运行时异常)
控制台呢正常打印的就是RuntimeException了。
异常的处理方式:
1.自己处理
2.交给上级处理(该方法是谁调用的谁就是上级)
然后,相比大家都会想到try…catch…finally
try: 存放可能发生异常的代码
catch: 匹配异常类的对象
finally: 异常匹配完毕后 肯定会执行的代码
下面我们来看一个简单的处理异常的栗子吧
try {
int num = 10 / 0;
System.out.println(num);
} catch (ArithmeticException e) {
System.out.println("我跌倒了很难受,呜呜呜呜呜呜呜");
} finally {
System.out.println("怎么办呢,要小姐姐亲亲才会高兴");
}
首先大家都知道任何数都是不可以除0,如果正常写并打印 10/0 的话会报ArithmeticException异常。那么当我们捕捉这个异常并处理之后呢。此时控制台会打印什么呢?
相比大家也能猜出一二了吧。
// 控制台打印
我跌倒了很难受,呜呜呜呜呜呜呜
怎么办呢,要小姐姐亲亲才会高兴
那么我们可不可以自己编写一个异常呢。
答案是肯定的
// 编写一个异常测试类
class TestException{
// 抛编译时异常
public void fun1() throws Exception {
throw new Exception("编译时异常");
}
// 抛运行时异常,运行时异常可以省略 方法上的throws声明
public void fun2() {
throw new RuntimeException("运行时异常");
}
}
// 在main方法中调用
public static void main(String[] args) {
Test test = new Test();
// fun1这个方法会在编译时就报错
//test.fun1();
test.fun2();
}
// 此时控制台就会打印此异常的
/* 1.打印异常信息 运行时异常
* 2.打印异常类 java.lang.RuntimeException
* 3.打印错误发生的位置 at xx.TestException.fun2(Demo.java:26)
* 4.将你的程序停止(记住)
*/
Exception in thread "main" java.lang.RuntimeException: 运行时异常
at xx.TestException.fun2(Demo.java:26)
at xx.Demo07.main(Demo.java:13)
这就写完了一个自定义的异常类了,是不是很开心呢。