初识java异常处理

对于目前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方式,向别人传递数据的机会。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值