欢迎来到天天文库
浏览记录
ID:19763868
大小:208.00 KB
页数:66页
时间:2018-10-06
《java课件之第七章异常处理与断言(ppt)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、7.1异常与异常类7.2异常处理机制7.3创建自己的异常类7.4断言机制7.1异常与异常类7.1.1程序错误与异常的概念7.1.2Throwable类及其子类7.1.1程序错误与异常的概念在程序设计中,发生错误是不可避免的。一般来说错误可以分成三种类型:编译错误逻辑错误运行时错误①编译错误编译错误(syntaxerror)是指编写的代码不符合Java的语法标准,这种错误往往是由于编程人员的粗心大意所造成的。例如,程序在方法中声明了一个变量,而后在使用之前没有初始化,这时编译器仍然会给出提示。在Java中,只有程序不存在任何编译错误,程序才能被编译成
2、类文件。②逻辑错误逻辑错误(logicerror)是指程序在设计时存在的缺陷,或者说程序虽然能够正常运行,但其运行结果不是设计程序的人所期望的那样。因为程序通过了编译,而且能够正常运行,因此逻辑错误一般很难发现。③运行时错误运行时错误(runtimeerror)也可以称为运行时异常(Exception)。程序能够通过编译,但在运行时也可能抛出异常或意外终止,此时说明程序中存在运行时错误。例如程序企图打开某个不存在的文件和整数被零除等。所谓异常(exception)是一种特殊的运行错误对象,是在程序运行过程中产生的终止程序正常运行的事件。如数组下标越
3、界、整数除法中零作除数、文件找不到等都可能使程序终止运行。为了理解异常的概念,首先看下面的程序:publicclassTest{publicstaticvoidmain(Stringargs[]){inta=5;intb=a/0;System.out.println(“a=”+a);}}该程序编译不会发生错误,可以生成Test.class字节码文件,但运行时结果如下:C:>javaTestExceptioninthread“main”java.lang.ArithmeticException:/byzeroatTest.main(Test.jav
4、a:4)该输出内容说明程序发生了异常,第一行给出了异常名称,第二行给出了异常发生的位置。当程序运行到语句intb=a/0;时,运行时系统产生了一个ArithmeticException异常类对象并抛出,运行时系统就在产生异常对象的方法中寻找处理该异常对象的代码,若有则进入异常处理的代码,若没有(如本例),运行时系统继续将异常对象抛给调用该方法的方法。由于main()方法是由JVM调用的,所以将异常抛给了JVM,JVM在out.err上输出异常的名称。程序的最后一行没有执行,这说明程序运行没有正常结束。再看下面一个程序,试图从键盘上输入一个字符,然后
5、输出。importjava.io.*;publicclassInputChar{publicstaticvoidmain(Stringargs[]){System.out.print("Inputachar:");charc=(char)System.in.read();System.out.println("c="+c);}}当编译该程序时会出现下列编译错误:c:>javacInputChar.javaInputChar.java:5:unreportedexceptionjava.io.IOExceptiom;mustbecaughtorde
6、claretobethrowncharc=(char)System.in.read();^1error上述编译错误说明程序中发现了没有报告的异常IOException,该异常必须捕获或声明抛出,同时编译器指出了需要捕获异常的位置。出现上述编译错误的原因是,read()方法在定义的时候声明抛出了异常,因此程序中若调用该方法必须声明抛出或捕获。7.1.2Throwable类及其子类Java语言的异常处理采用面向对象的方法,因此为各种异常建立了类层次。Java异常都是Throwable类的子类对象。Throwable类是Object类的直接子类,它定义在
7、java.lang包中。异常类的层次结构如图7-1所示。ThrowableErrorExceptionIOExceptionClassNotFoundExceptionNoSuchMethodExceptionRuntimeExceptionIllegalArgumentExceptionNullPointerExceptionClassCastExceptionArithmeticExceptionIndexOutOfBoundsExceptionArrayIndexOutOfBoundsExceptionStringIndexOutOfBoun
8、dsExceptionFileNotFoundExceptionVirtualMachineErrorLinkageErr
此文档下载收益归作者所有