今天主要总结异常机制。
异常
- 方法可在运行期间遇到问题时抛出异常(此异常为程序作者指定的情况)
- 异常是Exception类型的对象(异常也是对象)
- 方法可以用throw抛出异常对象。
- 可能会抛出异常的方法在方法声明后面加上throw Exception。
- 如果程序调用了可能有异常的方法,就得把调用包在try/catch块中,并将异常处理/恢复程序放在catch块中。(try中放有可能有异常的方法,catch中放你的处理方案),或者直接将该异常ducking掉。
- 如果该程序运行结果并未出现异常,则catch块不会被执行。
- finally块是无论如何都会执行的程序,包括try或者cath块中有return语句时,会先执行finally块中语句再return。
我对于异常的测试
异常text类
package study;
public class 异常text {
public int m;
public 异常text(int i) {
this.m=i;
}
public void print() throws Exception {
System.out.println(m);
if(m==10)
throw new Exception();
if(m<0)
throw new Exception();
}
}
text类
package study;
public class text {
public static void main(String[] args) throws Exception {
异常text a = new 异常text(2);
try {
while (true) {
a.print();
a.m++;
}
} catch (Exception ex) {
System.out.println("Oh,holy shit,this is a error.");
}finally {
System.out.println("No problem.");
}
a.m=-1;
a.print();
}
}
运行结果
2
3
4
5
6
7
8
9
10
Oh,holy shit,this is a error.
No problem.
-1
Exception in thread "main" java.lang.Exception
at study.异常text.print(异常text.java:13)
at study.text.main(text.java:17)
我们看到当main方法duck掉这个时,虽然程序能运行但是到异常位置,还是会出现错误,毕竟计算机不知道咋解决这个异常。
所以面对异常时我们有两种解决方案:
- 写出try/catch块用以解决问题。
- 直接将他duck掉。