Java基础教学课件六_第1页
Java基础教学课件六_第2页
Java基础教学课件六_第3页
Java基础教学课件六_第4页
Java基础教学课件六_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java基础课程内容异常理解异常的概念运用 try 块、catch 块和 finally 块处理异常运用多重 catch 块处理异常运用嵌套 try/catch 块处理异常运用关键字 throw 和 throws 处理异常运用JAVA编写和使用自定义异常集合List,Set,MapProperties类什么是异常异常(Exception)是一种特殊的运行错误,是在程序运行过程中发生、会打断程序正常执行的错误。Java异常Java程序运行过程中所发生的异常事件可分为两类:错误(Error):JVM系统内部错误、资源耗尽等严重情况违例(Exception): 其它因编程错误或偶然的外在因素导致的一

2、般性问题,例如:对负数开平方根空指针访问试图读取不存在的文件异常体系结构ExceptionArithmeticExceptionNullPointerExceptionObjectThrowableErrorThreadDeathSQLExceptionRuntimeExceptionNumberFormatExceptionAWTError异常体系结构Error类对象由Java虚拟机生成并抛出;无法恢复OutOfMerroyErrorException类对象由应用程序处理或抛出Exception编译错误运行异常编译错误编译错误是由于所编写的程序存在语法问题,未能通过有源代码到目标代码得的转换

3、,这个错误可以简单地有编译系统查出来。checkedException运行时异常运行错误是在程序运行过程中产生的错误。如:nullPointerException ArrayIndexOutOfBoundsException.常见的异常 10文件结束EOFException找不到文件FileNotFoundExceptionI/O 异常的根类IOException字符串到 float 型数字的转换无效NumberFormatException不能加载所需的类ClassNotFoundException方法接收到非法参数IllegalArgumentException数组大小小于或大于实际的数组

4、大小ArrayIndexOutOfBoundException尝试访问 null 对象成员NullPointerException许多 java.lang 异常的基类RuntimeException异常层次结构的根类Exception算术错误情形,如以零作除数ArithmeticException线程中断InterruptedException说 明异 常异常处理机制程序员通常只能处理违例(Exception),而对错误(Error)无能为力对于RuntimeException,通常不需要我们去捕获,这类异常由Java运行系统自动抛出并自动处理。处理异常捕获异常Try,catch,finall

5、y抛出异常Throws,throw捕获异常捕获异常是通过try-catch-finally语句实现的。try./可能产生违例的代码catch( ExceptionName1 e )./当产生ExceptionName1型违例时的处置措施catch( ExceptionName2 e ). /当产生ExceptionName2型违例时的处置措施 finally. /无条件执行的语句捕获异常try 捕获违例的第一步是用try语句块选定捕获违例的范围。catch 在catch语句块中是对违例对象进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的违例对象。与

6、其它对象一样,可以访问一个违例对象的成员变量或调用它的方法。getMessage( ) 方法,用来得到有关异常事件的信息printStackTrace( )用来跟踪异常事件发生时执行堆栈的内容。多重 catch一段代码可能会生成多个异常当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个类型与异常类型匹配的语句执行其中的一条 catch 语句之后,其他的 catch 语句将被忽略 15try . catch(ArrayIndexOutOfBoundsException e) catch(Exception e) 多重 catch使用多重 catch 语句时,异常子类一定要位于异常父

7、类之前16try . catch(ArrayIndexOutOfBoundsException e) . catch(Exception e) 捕获异常finally捕获例外的最后一步是通过finally语句为例外处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语句都会被执行。finally语句是任选的如果try或者catch块有return 指令,finally还是会被执行,流程先跳到finally然后再回到return指令异常处理举例(1)class ExceptionCatchpubli

8、c static void main(String args)int it=1,3,4;tryfor(int i=0;i=3;i+)System.out.println(iti);catch(ArrayIndexOutOfBoundsException e)System.out.println(oh my god! is wrong);异常处理块的一般形式try / 要监控错误的代码块 methodGeneratingException(); catch (Exception e) / Exception e 的异常处理程序 finally / 在 try 结束前要执行的代码块 cleanup

9、();19抛出异常如果一个方法(中的语句执行时)可能生成某种Exception,但是并不能确定如何处理这种违例,则此方法应声明抛弃违例throws声明异常表明该方法将不对这些违例进行处理,而由该方法的调用者负责处理实例throws异常声明如果使用 throw异常是通过关键字 throw 抛出,程序可以用throw语句引发明确的异常。如: try if(flag0) throw new NullPointerException();throw语句的操作数一定是Throwable类类型或Throwable子类类型的一个对象。22使用 throws示例class ThrowsDemo static

10、void throwOne() throws IllegalAccessException System.out.println(在throwOne中.); throw new IllegalAccessException(非法访问异常); public static void main(String args) try throwOne(); catch(IllegalAccessException e) System.out.println(捕获+e); 23回顾重写规则如果父类中的方法抛出多个异常,则子类中的覆盖方法要么抛出相同的异常,要么抛出异常的子类,但不能抛出新的异常。自定义异常c

11、lass MyException extends Exception MyException(String reason)this.reason=reason;String reason;/public String getMessage()return reason;区别public String getReason()return reason;Collection(集合)集合是将多个元素组成一个单元的对象集合是将多个对象组合在一起,对这些对象进行存储、检索等操纵集合 JDK1.4 集合接口框图这些类都保存在java.util包当中。集合Collection:集合层次中的根接口,JDK没有

12、提供这个接口直接的实现类。List:是一个有序的集合,可以包含重复的元素ArrayList:可变的数组,元素允许重复LinkedList:针对经常插入或者删除中间元素所设计的高效率集合Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。TreeSet:以有序状态保存并可防止重复Map:包含了key-value对。Map不能包含重复的keySortedMap是一个按照升序排列key的Map。Map接口和Collection接口没有任何关系。ArrayList和LinkedList的比较ArrayList底层采用数组完成,而LinkedList则是以一般的双向链表(dou

13、ble-linked list)完成,其内每个对象除了数据本身外,还有两个 引用,分别指向前一个元素和后一个元素。如果我们经常在List的开始处增加元素,或者在List中进行插入和删除操作,我们应该使用LinkedList,否则的话,使用ArrayList将更加快速。Vector和ArrayList的异同Vector和ArrayList的异同Vector类中所有的方法都是线程同步的,两个线程并发访问Vector对象是安全的,需要额外的监视器检查,运行效率低些。ArrayList类中所有的方法是非同步的,程序的效率比Vector高。hashtable 与 hashMap接口关系注:继承使用的是直

14、线,实现使用的虚线。SortedSetSetListMapHashSet LinkedHashSetTreeSet ArrayList LinkedList SortedMapHashMap TreeMap ArrayList可变的数组实例范型化约束ArrayList中所要放元素的类别ArrayList lists=new ArrayList();排序Collections:工具类取最大和最小的元素:Collections.max()、Collections.min()。Collections类主要是对列表进行操作sort();实例sort()只接受Comparable对象的listCompa

15、rable什么是Comparablemarker接口API回忆String中的compareTo方法public int compareTo(User user)return userNpareTo(user.getUserName();对集合的遍历forIterator迭代器(Iterator)的用法 Iterator接口定义了对Collection类型对象中所含元素的遍历等增强处理功能可以通过Collection接口中定义的iterator()方法获得一个对应的Iterator(实现类)对象Set (实现类)对象对应的Iterator仍然是无序的List(实现类)对象对应的ListIter

16、ator对象可以实现对所含元素的双向遍历: 使用next()方法和previous()方法Iterator接口用法举例import java.util.*;public class Test public static void main(String args) ArrayList h = new ArrayList();h.add(1st);h.add(2nd);h.add(new Integer(3);h.add(new Double(4.0);Iterator it = h.iterator();while ( it.hasNext() ) System.out.println(it.

17、next();Set不允许重复HashSet对象相等Equalspublic boolean equals(Object aSong) Song song = (Song)aSong; return getTitle().equals(song.getTitle();Hashcodepublic int hashCode() reutrn title.hashCode();MapMap使用 成对的key和valueKey不能重复实例Properties类 类似HashMapKey,valueProperties类 import java.util.*;import java.io.*;clas

18、s PropTest public static void main(String args) Properties pps=new Properties(); try pps.load(new FileInputStream(d:perties); Enumeration em=pertyNames(); /枚举类 while(em.hasMoreElements() String strKey=(String)em.nextElement(); /em.nextElement()返回Object类 String strValue=pps.getProperty(strKey); System.out.println(strKey+=+strValue); catch(Exception e) e.printStackTrace(); Stack栈(Stack)也是一种特殊的线性表,是一种后进先出(LIFO)的结构。是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为栈底(bottom)。栈的物理存储可以用顺序存储结构,也可以用链式存储结构。集合的使用集合的使用策略Iterator 优先于Enumeration Vector:用ArrayList代替Vector。Hashtable:用HashMap代替Hashtable

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论