15.01.2011

谈谈Java中的异常处理机制

异常是程序员在写代码的时候无可避免的绊脚石。如何检错也成了各个程序员的必修课。
相信许多在用VC6.0的初学者一定对他的检错头疼不已,一个程序改来改去,却还是发不现错误的来由。而在完全面向对象的Java语言中检错也似乎变得了简单起来。
既然是完全的面向对象,错误也无可例外的成为了类。向我们常见的Exception类就是一个异常类。而Java中给所有的错误类建立了一个完善的继承关系。所有错误的父类都是Throwable类。而他的两大子类Exception(异常类)和Error(错误类)则使得Java程序员可以很好的捕捉到代码的bug以便程序员做出及时的修改。
究竟什么是错误和异常呢?
相信各位程序员在编写程序的时候都会常常遇到这些语句:java.lang.StackOverflowException; java.lang.NullPointerException; java.lang.ArrayIndexOutOfBoundsException.等等
其实这些红字就是Java对栈溢出,空指针和数组越界的处理。遇到了这些错误那么你就得留意你的数组循环之类易出错的地方了。
那么,如何捕捉异常呢?
Java中设置了许多的关键字来捕捉异常,首先我们来看try-catch-finally模式块。
try {
//对这里的代码做尝试性的运行,如果出现异常,则跳入catch块的
//代码
} catch ( Exception e ) {
//这里的代码是对出现异常情况下进行的处理
} finally {
//finally块中代码做清除扫尾的工作
}
try-catch语句例如下:

public class ExceptionTest {
public static void main(String args[]){
int num = 200;
ExceptionTest et = new ExceptionTest();
et.A(num);
}
public void A(int num){
try{
if(num>0 && num<100){
System.out.println("结果正确!");
}else{
Exception e = new Exception();
throw e;
}
}catch(Exception e){
System.out.println("结果超出范围");
e.printStackTrace();
}
}
}

运行结果如下:
结果超出范围
java.lang.Exception
at ExceptionTest.A(ExceptionTest.java:13)
at ExceptionTest.main(ExceptionTest.java:6)

try-catch语句是大伙最常用的语句了,可条条道路通罗马,Java中对异常的处理并不只有这一种,另一种就是在可能出现异常的方法后面加上throws语句,调用该方法的所有方法均要加上,再在出现异常代码区域加上throw语句,如下例
例:

public class ExceptionTest {
public static void main(String args[])throws Exception{
int num = 200;
ExceptionTest et = new ExceptionTest();
et.A(num);
}
public void A(int num) throws Exception{
if(num>0 && num<100){
System.out.println("结果正确!");
}else{
System.out.println("结果超出范围!");
Exception e = new Exception();
throw e;
}
}
}

运行结果为:
结果超出范围!
Exception in thread "main" java.lang.Exception
at ExceptionTest.A(ExceptionTest.java:19)
at ExceptionTest.main(ExceptionTest.java:7)
利用throws和throw或者try-catch-finally可以方便的找到出错位置和出什么错误。作为一个合格的Java程序员应该将其熟练掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值