欢迎来到天天文库
浏览记录
ID:15957560
大小:53.00 KB
页数:6页
时间:2018-08-06
《java异常详解22849》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基础知识相关概念C语言中,通过使用if语句来判断是否出现了异常,同时,调用函数通过被调用函数的返回值感知在被调用函数中产生的异常事件并进行处理。全程变量ErroNo常常用来反映一个异常事件的类型。但是,这种错误处理机制会导致不少问题。Java通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。我们把生成异常对象并把它提交给运行时系统的过程称为抛出(throw)一个异常。运行时系统在方
2、法的调用栈中查找,从生成异常的方法开始进行回朔,直到找到包含相应异常处理的方法为止,这一个过程称为捕获(catch)一个异常。1.1异常处理关键字Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。JB的在线帮助中对这几个关键字是这样解释的:1.1.1try语句try语句用大括号{}指定了一段代码,该段代码可能会抛弃一个或多个异常。1.1.2catch语句catch语句的参数类似于方法的声明,包括一个异常类型和一个异常对象。异常类型必须为Thr
3、owable类的子类,它指明了catch语句所处理的异常类型,异常对象则由运行时系统在try所指定的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。catch语句可以有多个,分别处理不同类的异常。Java运行时系统从上到下分别对每个catch语句处理的异常类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配指catch所处理的异常类型与生成的异常对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。也可以用一个catch语句处理多
4、个异常类型,这时它的异常类型参数应该是这多个异常类型的父类,程序设计中要根据具体的情况来选择catch语句的异常处理类型。1.1.3finally语句try所限定的代码中,当抛弃一个异常时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛弃或不抛弃异常,也无论catch语句的异常类型是否与所抛弃的异常的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。1.1.4thro
5、ws语句throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型。1.1.5一个较为全面的例子,看懂得话,就算可以了!!publicclassTestException{publicTestException(){}booleantestEx()throwsException{booleanret=true;try{ret=testEx1();}catch(Exceptione){Sys
6、tem.out.println("testEx,catchexception");ret=false;throwe;}finally{System.out.println("testEx,finally;returnvalue="+ret);returnret;}}booleantestEx1()throwsException{booleanret=true;try{ret=testEx2();if(!ret){returnfalse;}System.out.println("testEx1,at
7、theendoftry");returnret;}catch(Exceptione){System.out.println("testEx1,catchexception");ret=false;throwe;}finally{System.out.println("testEx1,finally;returnvalue="+ret);returnret;}}booleantestEx2()throwsException{booleanret=true;try{intb=12;intc;for(i
8、nti=2;i>=-2;i--){c=b/i;System.out.println("i="+i);}returntrue;}catch(Exceptione){System.out.println("testEx2,catchexception");ret=false;throwe;}finally{System.out.println("testEx2,finally;returnvalue="+ret);returnret;}}publicstaticvoidmain(Str
此文档下载收益归作者所有