刚看了一些博客,为了自己不会忘记异常所以我再自己写一篇博客让自己好好复习,如果一些不对的地方请大家指出。
异常处理其实不是什么难点,至少我现在是这样认为。
这就是java异常处理的类的结构,所以的异常都是继承了Throwable,以下有Error 和Exception我们一般在以后的开发中都会可能遇到,一般来说遇到 Error的时候会是一个很严重的错误,比如栈溢出等。
Exception异常我们是遇到会比较的平凡了。我就在这里浅显的给大家介绍一下大致的用法吧!有什么不对的地方大家可以给我指出。
先给大家看一段代码吧!
public class Test4 {
public static void main(String[] args) {
int a=1;
int b=0;
System.out.println(a/b);
}
}
大家看到这个代码是什么感觉呢?是不是觉得不对劲,怎么除数变成了0了,所以这一段代码肯定是有问题的了。
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.text1.Test4.main(Test4.java:7)
运行就报了这样的一个错误,算术的一个异常。好了,我感觉我好像太罗嗦了,我就直接给大家上代码然后写注释吧。
package com.text1;
public class Test4 {
/*
* 异常处理一共有五个关键词 try catch finally throw throws
*/
public static void main(String[] args) {
int a=1;
int b=0;
//经过异常的捕获之后代码不会中断,这是开发中所需要的。
try {//处理部分,若是代码没有问题会执行,出现异常就会交给catch执行
System.out.println(a/b);
} catch (ArithmeticException e) {//捕获异常,出现异常后在这里执行,ArithmeticException这里的意思是代表什么异常看到上面的图我们也可以用Exception来捕获
System.out.println("除数不可以为零");
}finally {//不管是否有异常这里都是会执行的,可以省略
System.out.println("我怎么样都会执行");
}
System.out.println("没有中断我还是执行了");
}
}
package com.text1;
public class Test4 {
/*
* 异常处理一共有五个关键词 try catch finally throw throws
*/
public static void main(String[] args) {
int a=1;
int b=0;
Test4 test4=new Test4();
test4.test(a, b);
}
public void test(int a,int b) {
if (b==0) {
throw new ArithmeticException();//主动抛出异常
}
}
}
package com.text1;
public class Test4 {
/*
* 异常处理一共有五个关键词 try catch finally throw throws
*/
public static void main(String[] args) {
int a=1;
int b=0;
Test4 test4=new Test4();
try {
test4.test(a, b);
} catch (Exception e) {
e.printStackTrace();
}
}
public void test(int a,int b) throws Exception{//可以主动往外抛,但是在需要使用的时候需要捕获
if (b==0) {
throw new ArithmeticException();//主动抛出异常
}
}
}
这些其实很简单就是那些关键字的使用,我现在经验还是太少了我看博客是说在项目中可能还是大量需要的。
可能在实际需要的时候你还需要自己写一个异常,我在这里也给大家做一个演示吧。
这是一个自己写的一个异常类
package com.text1;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction;
public class MyException extends Exception{//继承Exception这个类,要是错误的话就是继承Error都是差不多的
int a;
public MyException(int a) {
this.a=a;
}
public String toString() {//这里就是打印的内容,toString 方法大家应该是很熟悉了
return "这是一个异常"+"你的错误是因为"+a+"数值太大";
}
}
package com.text1;
public class Test4 {
/*
* 异常处理一共有五个关键词 try catch finally throw throws
*/
public static void main(String[] args) {
try {
test(11);
} catch (MyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static void test(int a) throws MyException {
if (a>10) {
throw new MyException(a);//这里需要捕获或者抛出,我选择的是抛出,抛出之后要使用的话就是需要捕获千万别忘记了
}
else {
System.out.println(a);
}
}
}
这就是异常处理的结果
好了,异常就先讲到这里了,给大家一点小小的建议吧,就是代码的话还是自己多敲一敲不然真的是那种,你脑子会了,但是手不会,一旦是上手的时候自己就啥都不知道了。