什么是异常和错误?用两个英语单词表示,就是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(这是本人的第一篇博客,写的比较烂,请大家多多谅解哈)。
分享到:
相关推荐
一份软定时器的链表实现粗略代码,在创建节点的时候没有分配地址空间,需要加上一句malloc,还有就是释放的时候也需要添加一句代码
本文档只是对HAL的部分内容进行中文的粗略的整理 有些我还觉得不重要的没有整理 后期如果整理 我会零分贴上来
XY数控工作台装配图,是课程设计的一般模板,可以领你很好的计算
粗略实现spring创建bean
2021年最新高光谱异常检测综述及粗略翻译
行业分类-设备装置-对移动用户的终端进行粗略定位的方法.zip
粗略的说明了一些实现的思想,来源于网络 此资源不加分 可以随便的下一下 权当无常的风险 请不要转载在别的上面
移动端用于压力测试系统和建模基于 DoS 的攻击的多向量拒绝服务工具,以创建统计异常和基于签名的警报机制。 这是一个粗略的版本,所以它可能有问题,但核心功能就在那里。 有关用法,请使用 -h 或 --help。 该工具...
Drools5源码粗略研究
2进制粗略计算.c
粗略劳动力计算.docx
个人对DTO这种设计模式的一些粗略见解。
火灾检测的粗略匹配算法 matlab
html仿购物网(粗略制作)
这个文件里面是一个关于socket网络编程的粗略的讲解.对于入门有用的.
粗略频率估计,对含噪声的信号进行频率估计。
Android CSDN粗略模仿代码,其用到二个开源工具一个是Xutils,一个是afinal,还用到炫酷的侧滑菜单以及圆形头像。
有关汉服的粗略市场预测及营销方案
Hybrid A*核心逻辑代码(粗略)