ch6 异常处理

上传人:gp****x 文档编号:243425967 上传时间:2024-09-23 格式:PPT 页数:26 大小:79.50KB
返回 下载 相关 举报
ch6 异常处理_第1页
第1页 / 共26页
ch6 异常处理_第2页
第2页 / 共26页
ch6 异常处理_第3页
第3页 / 共26页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,此刻打盹,你将做梦;而此刻学习, 你将圆梦,!,第六章 异常处理(Exceptions),Exceptions,的概念,异常,处理,自定义,异常,9/23/2024,1,1public class HelloWorld,2public static void main(String args ),3int i=0;,4String greetings = “Hello World!”,”Hello!”,5“HELLO WORLD!”;,6while ( i4),7System.out.println(greetingsi);,8i+;,9,10,11,Hello World!,Hello!,HELLO WORLD!,Java.lang.ArrayIndexOutOfBoundsException,at HelloWorld.main(HelloWorld.java:7),9/23/2024,2,Exception 的概念,Exception 是在程序运行时打断正常程序流程的异常的情况,试图打开的文件不存在,网络链接中断,操作符越界,要加载类文件不存在,Java,中定义了各种异常,9/23/2024,3,异常(Exception)的层次结构,9/23/2024,4,Error,很难恢复的严重错误,一般不由程序处理。,RuntimeException,程序设计或实现上的问题,如数组越界等。,其它异常,通常是由环境因素引起的,并且可以被处理的。,如文件不存在,无效URL等。,9/23/2024,5,异常处理,捕获并处理异常,Try.catch.finally,将方法中产生的异常抛出,9/23/2024,6,示例:ListOfNumbers,import java.io.*;,import java.util.Vector;,public class ListOfNumbers ,private Vector victor;,private static final int size = 10;,public ListOfNumbers ( ) ,victor = new Vector(size);,for (int i = 0; i size; i+),victor.addElement(new Integer(i); ,public void writeList() ,PrintWriter out = new PrintWriter(new (Out);,for (int i = 0; i size; i+),out.println(Value at: + i + = + victor.elementAt(i);,out.close();,9/23/2024,7,try语句块,一般形式:,try ,Java statements /一条或多条可能产生异常的java语句。,try 语句后必须跟随至少一个catch或finally语句块。,9/23/2024,8,catch语句块,catch,语句块提供错误处理。,一般格式:,catch (SomeThrowableObject variableName) ,Java statements,SomeThrowableObject:能够被处理的异常类名,必须是throwable类的子类,variableName: 是异常处理程序中能够引用的代表被捕获异常的变量名称。,Java statements: 当捕获到异常时执行的java语句。,9/23/2024,9,finally 语句块,在异常处理过程中,finally 语句块总是会被执行到: 无论有没有异常发生,也无论有没有异常被捕捉到,可选项: finally 语句块,通常位于catch 语句块的后面,可以用来释放try语句块中获得的资源,例如,关闭在try语句块中打开的文件,9/23/2024,10,异常,处理try, catch和finally 语句,1 try,2 / code that might throw a partcular exception,3 catch(MyExceptionType e),4 / code to excute if a MyExceptionType exception is thrown,5 catch (Exception e),6 / code to execute if a general Exception exception is thrown,7 finally,9/23/2024,11,public void writeList() ,PrintWriter out = null;,try ,System.out.println(Entering try statement);,out = new PrintWriter(new (Out);,for (int i = 0; i = 10,Closing PrintWriter,Entering try statement,Closing PrintWriter,9/23/2024,13,多种,异常,的同时处理,9/23/2024,14,捕获与处理异常示例,pu,blic static void main(String args ),int i = 0 ;,String greetings=“Hello World!”,”Hello!”,”HELLO!”;,while (i=0;,double y=,Math.sqrt(x,);,或者,assert x=0,:“,x=0”;/,将“,x=0”,传给,AssertionError,对象,从而可在出错时显示出来,double y=,Math.sqrt(x,);,当,x,为负值时,,assert,语句将抛出,AssertionError,异常,你就可以根据异常信息对程序的其它部分进行检查。,因为,assert,是一个新的关键字,因此在使用时需要告诉编译器你将使用该特性。在编译时必须使用,-source 1.4,选项,例如:,javac,-source 1.4,Myclass.class,9/23/2024,22,打开和关闭断言功能,默认情况下,断言是关闭的。要通过-enableassertions或者-ea选项来运行程序以打开断言:,java ea Myapp,打开或者关闭断言是类装载器的功能。当断言功能被关闭时,类装载器会跳过那些和断言相关的代码,因此不会降低程序运行速度,即它们没有任何副作用。,也可以对某个类或某个包打开断言功能,例如:,java ea:Myclass ea:com.mydx.mylib,该命令打开类Myclass以及在com.mydx.mylib包中及其子包中全部类的断言功能(包名后的省略号是必须的),可以使用-da选项来关闭特定类或包的断言功能:,java da:Myclass da:com.mydx.mylib,ea和-da选项对系统类(不通过类装载器而由JVM直接装载的类)无效,对系统类使用esa和-dsa选项,9/23/2024,23,何时使用断言,记住两点:,断言失败是致命的、不可恢复的错误。,断言检查仅仅用在程序开发和测试阶段。,因此,断言仅仅应该在测试阶段用来定位程序内部错误。,可以将断言语句作为方法的前置条件或后置条件来添加,也可以将其置于任何方法内,或放在,ifelse,块和,switch,块中。,assert,关键字的唯一限制在于它必须位于可执行块中。,对一个方法调用是否使用断言,应先看看该方法的文档。如果文档指明在某种情况下会抛出异常,那么对这种情况不需使用断言;如果文档指明一个限制条件,但没有说明违反该条件会抛出异常,此时就可以使用断言,9/23/2024,24,对方法调用使用断言,以标准库中的Arrays.sort方法为例:,static void sort(int a, int fromIndex, int toIndex),该方法的文档说明了:1、如果索引值不正确时该方法会抛出一个异常;2、不允许使用一个空数组a来调用该方法(这种限制称为前提),对于1的情况,调用该方法时就不需使用断言;对于2的情况,就可以在方法开始前使用断言:,assert(a!=null);/断言数组a不为空,断言可以用于验证传递给private方法的参数。不过,断言不应该用于验证传递给public方法的参数,因为不管是否启用了断言,public方法都必须检查其参数。,不过,既可以在public方法中,也可以在非public方法中利用断言测试后置条件。,另外,断言不应该以任何方式改变程序的状态,9/23/2024,25,断言程序分析,public class Test ,public static void main(String args) ,int x = 0;,assert (x 0):assertion failed;,System.out.println(finished);,What is the result?,A. finished,B. Compilation fails.,C. An AssertionError is thrown.,D. An AssertionError is thrown and finished is output.,9/23/2024,26,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!