您的位置:首页 > 编程语言 > Java开发

Java异常

2016-07-10 14:11 447 查看
一、Java中的异常分类
Java中所有异常的父类是Exception分为受理异常和非受理异常,受检异常是:SQLException、IQException、ClassNotFoundException、、、、;非受检异常是:RuntimeException以下的子类,也是Exception的子类,RuntimeException作为非受理异常它的子类有:NullPointException、ArithmeticException、EvenException、、、、、例如以下:

1.非受检异常(运行异常)

package oneWeek;

public class Except {
public static void main(String[] args) {
Except exc = new Except();
int v = exc.margin(20, 0);
}
public int margin(int a,int b){
int result=a/b;
return result;
}
}

通过运行程序,执行的结果是:Exception in thread "main" java.lang.ArithmeticException: / by zero
at oneWeek.Except.margin(Except.java:9)
at oneWeek.Except.main(Except.java:6)
因为它的被除数为零,所以出现算术异常即非处理异常

还有最常见的空指针异常例如:

package oneWeek;

import javax.swing.JFrame;

public class NullPoint {
static JFrame jf;
public static void main(String[] args) {
jf.setVisible(true);
}
}

其执行的结果是:Exception in thread "main" java.lang.NullPointerException
at oneWeek.NullPoint.main(NullPoint.java:8)
是由于没有给定相关的地址,所以出现空指针异常

2.受检异常(非运行异常)

但凡继承了Exception不继承RuntimeException都是受检异常;

Java异常处理机制

1>捕获异常(将异常捕获)

1.try—catch语句

在Java中,非运行异常一般通过try-catch语句捕获,一般语法形式为:

try{
//可能发生异常的代码程序
}catch{
//执行异常操作
}
catch{
//执行异常操作
}.......
finally{
处理完try与catch操作完后收尾操作,异常统一出口
}
我们用简单的程序来试试,例如:

package oneWeek;

public class Except {
public static void main(String[] args) {
Except exc = new Except();
int v = exc.margin(20, 0);
}
public int margin(int a,int b){
int result = 0;
try{
result=a/b;
}catch(ArithmeticException e){
e.printStackTrace();
}finally{
System.out.println("程序正常结束");
}
return result;
}
}其执行的结果是:java.lang.ArithmeticException: / by zero
at oneWeek.Except.margin(Except.java:11)
at oneWeek.Except.main(Except.java:6)

程序正常结束
由此可见,尽管程序出现异常,finally最终还得执行

2>抛出异常(将异常抛出)
同上,抛出异常我们任然可以用代码来解释:

package oneWeek;

public class ThrowException {
public static void main(String[] args) throws ArithmeticException{
int i = 8;
int j = 0;
try{
System.out.println("i/j的值是"+i/j);
}catch(ArithmeticException e){
throw new ArithmeticException();
}finally{
System.out.println("执行了finally语句");
}
}
}输出结果是:执行了finally语句

Exception in thread "main" java.lang.ArithmeticException
at oneWeek.ThrowException.main(ThrowException.java:10)
先执行了finally语句,在执行了异常抛出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: