对异常和错误机制粗略见解

什么是异常和错误?用两个英语单词表示,就是Error与Exception 。我对两个的解释是,Error是无法避免的,比如各种硬件故障,而Exception 则是可预见的,我把它看做程序的缺陷。很多异常是由于编写者的逻辑错误所引起的,最常见的例子就是数组越界:
IndexOutOfBoundsException,当程序运行的过程中,数组发生越界,如果你未对其进行处理,则会抛给虚拟机,而虚拟机中已经有对这些异常进行处理的机制。
另一种就是使用try...catch,由于我对这使用不多,所以以下面这个简单的代码为例说明:
public class Exercise
{
int[] a=new int[10];
int i;
public static void main(String ages[])
{
Exercise ex=new Exercise();
ex.Test();
}
/*
* 对异常进行处理
*/
public void Test()
{
//通过try catch 获得异常
try {
for(i=0;i<50;i++)
{
a[i]=i;
}

}
catch (Exception e)
{
e.printStackTrace();
//打印出错时的i
System.out.println("当i="+i+"出错");
}

}
}
在控制台会打印出:
java.lang.ArrayIndexOutOfBoundsException: 10
at ExpecTion.Exercise.Test(Exercise.java:22)
at ExpecTion.Exercise.main(Exercise.java:10)
当i=10出错

其实使用try...catch的效果与这个基本一致,这其中的原因便是上面提到的虚拟机中已有的对这些异常处理的机制。try...catch在其中的作用是在这层捕获异常。这些即使不用try...catch也能正常编译的异常称为运行时异常:RuntimeException,这些异常一般是由程序逻辑错误引起的。
而真正需要使用到try...catch的异常往往是非运行时异常,即必须进行处理的异常。比如在createNewFile()时,由于在建立File类时给定的路径不一定存在,所以会产生异常。这些异常如果不处理,Eclipse是无法正常编译的,这时try...catch的作用就显现出来了。这时常规的有两种做法:throws、throw或者try...catch。throws是用来声明一个方法可能抛出的所有异常信息,throw则是指抛出的一个具体的异常类型。try...catch在其中的作用是在这层捕获异常,并制定相应的处理方法。例子仍然是最简单的代码(对createNewFile()):

/*
* 对异常进行处理
* 用throws处理异常
*/
public void Test () throws Exception
{
String s="c\\";
File f=new File(s);
f.createNewFile();
}

PS(这是本人的第一篇博客,写的比较烂,请大家多多谅解哈)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值