初识java异常处理

来源:互联网 发布:数据恢复apk 编辑:程序博客网 时间:2024/05/16 07:41

对于目前java的学习阶段,异常处理虽说实际意义还没体现,花个时间看看总结下总比不知道好,在实际开发中是不得不考虑的问题。

异常处理的概念

为了处理一些代码无法掌握的状况,好多语言都设计了一个处理机制,我们叫它异常处理机制。例如:文件不存在,数据库未连接,网络无法连接等。JAVA为无法掌握的各种情况都设计了对应的类(对象),如果发生该情况,则系统(JVM )创建该对象,将该对象扔给程序员代码。简单的说,异常是系统创建的对象;异常对象是java设计出来抛给程序员的一个对象。

异常处理的分类

异常的分类按功能大概分:IO Exception ,SQL Ecception,NET Exception,RunTime Exception,Event Exception......

所有的异常都属于Exception的子集。

处理异常

java提供了两种处理机制,机制一:try{}  catch(){} ;  机制二: throws  xxx Exception;我们管机制一叫手动处理模式(负责模式),机制二叫不负责处理模式。

不负责模式

出现异常的代码所在的代码后,throws XXXException.它的含义是,我不想处理,谁调用谁处理。还有种情况,我们调用别人的方法,  别人的方法  后有throws XXXException语句 则,我们必须处理,不处理,编译同不过。这种情况,其实最大的好处,就是提醒 别人我有异常,对方应该注意到。

负责模式

try{.........有可能异常的代码.........}catch(XXXException  ex){处理代码}。。。正常代码。。。。。。

上面的结构就是,如果,发生异常,系统就抛出异常对象,将异常对象传递给ex,进入catch(){}处理模块,catch()模块处理完成后,继续执行try{}后面的语句。

你比如说下面这个例子

try{...代码1...代码2*****...代码3有可能异常的代码...代码4......}catch(XXXException  ex){处理代码}。。。正常代码18。。。。。。

代码2发生异常,执行完catch()后,系统将执行正常代码18,而不是代码3.

看起来总结前辈们的经验说:实际开发中,尽可能的多try{},或者try{}中代码尽可能的少,应该对各种异常,进行各种分门别类的处理。还有一个残酷的真相:真实的开发中,异常处理的代码要远远的多余正常的代码,大概齐:3:1;前辈们的经验是:在开发中,先别管异常,先一门心思 搞功能。、

对于try{}...catch()....finnally()  情况,finally{}的意思是,不管前面是否发生异常,都要执行finally{}语句,在实际中,如果catch()中有return ,则catch()后的代码,就没有机会执行,但是,如果后面有finally(),则,必须执行完finall{}才return。如果catch()中有System.exit(0),则finally{}也不执行。一般来书,finally中放置的代码,都是资源释放类代码。

自定义异常

在开发中,我们可以自己创建一个异常类,然后自己创建异常对象,自己抛出,

class MyException  extends Exception{public String toString(){return "我是异常";}}class AA{public static void main(String [] args) {int i=3;if(i==3){  MyException mye = new MyException();   throw mye;}}}
异常是可以可以携带数据的对象,我们提供了一种非return方式,向别人传递数据的机会。



1 0