java 异常 ppt_Java程序设计基础与实践 第6章 异常处理.ppt

《Java程序设计基础与实践 第6章 异常处理.ppt》由会员分享,可在线阅读,更多相关《Java程序设计基础与实践 第6章 异常处理.ppt(19页珍藏版)》请在人人文库网上搜索。

1、第6章 异常处理,Java异常体系结构 Java异常处理机制 Java异常的捕获、处理方法 Java自定义异常的定义、抛出方法,6.1.1 Java异常体系结构及处理机制 异常的概念 异常(Exception)又称为例外,是指在程序运行过程中发生的非正常事件,如用户数据输入错误、程序代码错误、文件找不到、对空对象进行操作等错误。异常事件的发生,中断了程序的正常执行,可能带来严重的后果和损失。, Java异常体系结构 Java系统中提供了许多异常类,这些类又称为标准异常类,分布在Java.lang、Java.io、Java.util和J包中。所有的异常都是由一个称为Throwable类及其子类派。

2、生出来的,其层次结构如图6.1所示。,图6.1 Java异常体系结构, Throwable Throwable类是Java语言中所有错误或异常的超类。 Error与Exception Error是Throwable的子类,是程序无法处理的错误。 Exception类及其子类是Throwable的子类,是程序本身可以处理的异常,这种异常分运行时异常(RuntimeException)和非运行时异常两大类。 运行时异常和非运行时异常 运行时异常是在Java虚拟机正常运行期间抛出的异常的超类,Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,会编译通过,因此也称之为不检查异常(Unch。

3、ecked Exception)。,表6.1 常见的运行时异常,非运行时异常是RuntimeException以外的异常,也称为检查异常(Checked Exception),类型上都属于CheckedException类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过,所以一般情况下编写程序时不自定义检查异常,常见非运行时异常如表6.2所示。,表6.2 常见的非运行时异常, Java异常分类 Java异常类有两个来源,一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。 Java异常的处理方法 Java采用面。

4、向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。,6.1.2 异常的捕获和处理 异常处理的基本结构 在Java中,异常处理的基本结构是: try /可能出现特定异常的代码 catch(异常类型 异常的变量名) /异常处理代码 finally /异常发生,方法返回之前,最终执行的代码 , try、catch、finally三个语句块应注意的问题 try、catch、finally三个语句块均不能单独使用,三者可以组成try.catch.finally、try.catch、try.fi。

5、nally三种结构,catch语句可以有一个或多个,finally语句最多只有一个。 try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。如果要在三个块中都可以访问,则需要将变量定义到这些代码块的外面。 在有多个catch块的情况下,如果处理的异常类型之间具有继承关系,应该首先捕获子类异常,再捕获父类异常,例如: class Teacher String name,number; int age,num; Teacher(String name,int age) this.name=name; this.age=age; void setNumber。

6、(String number) try /异常处理 num=Integer.parseInt(number); catch(NumberFormatException e) System.out.println(工号格式错误!); int getNumber() return num; public static void main(String args) Teacher t1=new Teacher(黎明,28); Teacher t2=new Teacher(张力,30); t1.setNumber(2a001); t2.setNumber(22001); System.out.prin。

7、tln(工号:+t2.getNumber(); ,6.1.3 自定义异常 自定义异常类可以继承Throwable类或者Exception,而不要继承Error类,自定义异常类之间也可以有继承关系。 自定义异常必须使用throws声明方法可能抛出的自定义异常,并用throw语句在适当的时候抛出自定义异常。,例如: class MyException extends Exception /定义自定义异常 MyException() /定义构造方法 super(); MyException(String s) super(s); class Teacher String name,number; i。

8、nt age; Teacher(String name,int age) this.name=name; this.age=age; void setNumber(String number) throws MyException if(number.equals(2a001) throw new MyException(自定义异常); else this.number=number; String getNumber() return number; ,public static void main(String args) Teacher t1=new Teacher(黎明,28); Te。

9、acher t2=new Teacher(张力,30); try t2.setNumber(22001); t1.setNumber(2a001); catch(MyException e) System.out.println(出现自定义异常!); finally System.out.println(工号:+t2.getNumber(); ,6.1.4 抛出异常 使用throw关键字抛出异常 throw关键字是用于方法体内部,用来抛出一个Throwable类型的异常。throw语句的格式为: throw 异常类对象名; 使用throws关键字声明抛出异常 当方法的调用者不能处理该异常的时候。

10、,应该将它向上传递,由调用它的方法来处理异常。throws语句的格式为: 方法修饰符 返回值的类型 成员方法名(形式参数表)throws 异常表/方法声明 /方法体 ,例如: class Teacher String name,number; int age,num; Teacher(String name,int age) this.name=name; this.age=age; void setNumber(String number) throws NumberFormatException/声明要抛出的异常 if(number.equals(2a001) /抛出异常 throw ne。

11、w NumberFormatException(); else this.number=number; String getNumber() return number; public static void main(String args) Teacher t1=new Teacher(黎明,28); Teacher t2=new Teacher(张力,30); t1.setNumber(2a001); /满足异常条件,系统会抛出异常 t2.setNumber(22001); System.out.println(t2.getNumber(); ,6.1.5 Throwable类中的常用方。

12、法,表6.3 Throwable类中的常用方法,例如: class Teacher String name,number; int age,num; Teacher(String name,int age) this.name=name; this.age=age; void setNumber(String number) try /异常处理 num=Integer.parseInt(number); catch(NumberFormatException e) System.out.println(使用getMessage():+e.getMessage(); System.out.println(使用toString():+e.toString(); System.out.print(使用printStackTrace:); e.printStackTrace(); int getNumber() return num; public static void main(String args) Teacher t1=new Teacher(黎明,28); Teacher t2=new Teacher(张力,30); t2.setNumber(22001); System.out.println(工号:+t2.getNumber(); t1.setNumber(2a001);。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值