Java面向对象程序设计第6章 内部类与异常类
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java中的处理方法?
readfile{ try{ open the file; //打开文件 正常 dertermine its size; //判断大小 业务 allocate that much memory; //分配内存 逻辑 read the file into memory; //将文件读入内存 close the file; //关闭文件 } catch (fileopenfailed){do sth. } catch (sizederterminedfailed){do sth.} 异常 catch (memoryallocatedfailed){do sth.} 捕捉 catch (readfailed){do sth. } 使用 Java的异常处理机制,读、写和调试代码 catch(fileclosefailed){do sth.} } 变得清晰。它把错误的代码和正常的代码分开。
…
2、异常处理方法 一旦捕获异常,马上进行处理 捕获异常,但并不处理,或只部分处理 重新抛出异常
Java中如何进行异常处理 • Java异常处理:try、catch、finally、 throw、throws 5个关键字。
有可能会出现异常的代码一定要放到try代码块中
try
不管有没有异常 都要执行的代码
行重写
• 由于匿名类没有类名,因此不能重用这个对象
• 创建形式:
new People(){
匿名类类体 };
和类有关的匿名类
• 匿名类在创建对象时,要直接使用父类的构造 方法
完成三件事: 1、创建一个Speak的子类,该子类为匿名类
2、改写Speak中的方法speakHello()
3、返回该子类的引用,赋给Speak speak
{ }必不可少,即使只 有一句代码
三、异常的抛出和处理
• throws语句指明方法中可能要产生的异常类 型,由调用者进行异常处理。 •在抛出的方法定义后加上 throws Exception •功能:在调用方法和可能产生的异常的被调 用方法之间建立起系统处理异常所需的联系
void f() throws TooBig,TooSmall,OldStyle{ // body of f() }
return c; }
返回
三、异常的抛出和处理
如果需要在程序中自行抛出异常,应使用 throw语句 throw语句抛出的不是异常类,而是一个异常 实例,而且每次只能抛出一个异常实例
Throws 与Throw 区别
throws是用来声明一个方法可能抛出的所有异常信 息 throw则是指抛出的一个具体的异常类型; 通常在一个方法(类)的声明处通过throws声明方 法(类)可能抛出的异常信息,而在方法(类)内部 通过throw声明一个具体的异常信息; throws通常不用显示的捕获异常,可由系统自动将 所有捕获的异常信息抛给上级方法; throw则需要用户自己捕获相关的异常,而后在对 其进行相关包装,最后在将包装后的异常信息抛出。
TestDiv (写一个方法,throws 异常)
public static int div() throws Exception{ String a = JOptionPane.showInputDialog("请输入被除数:"); String b = JOptionPane.showInputDialog("请输入除数:"); System.out.print(a+"/"+b+"="); int a1=Integer.parseInt(a); int b1=Integer.parseInt(b); int c=a1/b1; System.out.println(c);
《Java面向对象程序设计》 第6章
内部类与异常类
主讲:王美丽
办公室:信息学院403 Email: meili_w@nwsuaf.edu.cn
主要内容
• 内部类 • 匿名类 • 异常类
• 断言
难点
• 异常类
6.1 内部类
类的成员: 成员变量、成员方法 Java支持在一个类中声明另一个类,这样的类称作内部类, 而包含内部类的类称为内部类的外嵌类。 内部类可以访问外嵌类的成员变量、成员方法 。 外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。 内部类的类体中不可以声明类变量和类方法。 内部类能够访问外部内的一切成员变量和方法,包括私有的, 而实现接口或继承类做不到。
自定义异常类
• 第2步:定义异常对象,并抛出该对象。
public class testException{ static void Test( ) throws UserException{ userException e; e=new userException("自定义异常" ); throw e; } public static void main(String args[ ]) { try{ Test( ); }catch(userException e) { System.out.println(e.show( )); } } }
和接口有关的匿名类
Java允许直接用接口名和一个类体创建一个匿名对象,
此类体被认为是实现了 Computable接口的类去掉类声 明后的类体,称作匿名类。 下列代码就是用实现了 Computable 接口的类(匿 名类)创建对象:
new Computable() { 实现接口的匿名类的类体
}
6.3
finally
catch
捕获和处理异常
throw
throws
在方法中手动抛出异常
声明方法有可能抛出的各种异常类
2、异常处理方法(1)
try
{//业务实现代码 } Catch块可以有多个, catch (Type1 id1 ) 从上往下依次判断,只 {处理异常类型1语句;} 要捕捉到一个异常,下 catch ( Typen id2 ) 面的catch块不会执行 {处理异常类型2语句;} 有try,则catch、 ……//其它catch语句 finally必须出现其一。 [finally { 无论是否抛出异常都要执行的语句;}]
24
Eclipse中启用断言: Run -> Run... -> Arguments菜单项的 VM arguments区域,加上断言开启 的标志-enableassertions 或者-ea , 然后在debug环境下运行。
• §6.5
小结
• 内部类 • 匿名类 • 异常类 • 断言
《Java面向对象程序设计》 第6章
自定义异常类
• 对于自定义异常,必须采用 throw 语句 抛出异常,这种类型的异常不会自行 产生。总体上分为两步:
– 第1步:定义异常类 – 第2步:定义异常对象,并抛出该对象。
自定义异常类
• 第1步:定义异常类 class userException extends Exception{ int n=0; // 计数器 userException( ) { n++; } userException(String s ){ super(s); n++; } String show( ) { return "自定义异常对象:"+n; } }
自定义异常类
• 通过继承Exception类或它的子类,实现自定义异常 类。 • Exception类有两个构造函数 – public Exception(); – public Exception(String s); 其中s表示对异常的描 述说明 • Exception类的常用方法: – public void printStackTrace();返回调用栈信息 – public String toString();返回异常对象的字符串表 示 – public String getMessage();返回异常对象中携带的 出错信息
异常类
概念
特点
异常是指程序在执行过程中出现的意外 事件。
通常会使程序的正常流程被打断
能否很好的处理运行时刻的异常情况是一个程序 健康的标志
wenku.baidu.com
什么时候会发生异常?
输入数据不符合要求
除数为0
数组的下标越界
少了所需加载的类
打开不存在的文件
网络无法连接
操作数超出所要求的范围
自定义异常,要求程序处理…
• 谢谢!
内部类例
public class China{ private String song="义勇军进行曲"; public void test(){} class Beijing{ String name="北京"; void speak(){ System.out.println("Our capital is: "+name+",Our national song is :"+song);}} public static void main(String[] args) { China c= new China(); c.new Beijing().speak();}}
6.4 断言
• Java1.4以后引入断言机制 • 主要用于监视代码的执行状态 • 两种格式:
– assert booleanExperession; 如果booleanExperession为真,继续执行,否则在此 处停止执行 – assert booleanExperession:messageExpression 如果booleanExperession为真,继续执行,否则在此 处停止执行,并输出messageExpression
1、Java中的异常类
Object
指的是一般的异常,例如,输入 / 输出(I/O )异
Throwable 常。对这些异常应用程序可以进行处理
Error 错误类
Exception 异常类
… …
RuntimeException 运行异常
错误:指的是系统异常或运行环境出现的异常, 这些异常一般是很严重的异常, 即使捕捉到通常 也无法处理,例如Java虚拟机异常
6.2
匿名类
匿名内部类:子类去掉类声明的类体 优点: 使代码更加简洁、紧凑,模块化程度更高。 匿名内部类两种实现方式:
继承一个类,重写其方法;
实现一个接口(可以是多个),实现其方法。
• 匿名类是一个子类,用于临时创建一个内部类对象 ,不必单独去定义该子类
• 匿名类体内可以对父类、抽象类以及接口的方法进