




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6讲 异常面 向 对 象 程 序 设 计北京科技大学天津学院 信息工程系2回顾父类与子类的继承关系子类与父类之间发生方法重写抽象方法与抽象类的意义接口的意义与应用向上转型与可扩展性抽象类与接口的区别设计模式北京科技大学天津学院 信息工程系3简单工厂模式女娲造人简单的工厂模式的应用。首先,在这个造人的思想里面,有几个重要的角色:女娲本身、抽象的人的概念和女娲所造出的具体的人。女娲:工厂类,也就是简单工厂模式的核心角色。具体的人:是简单工厂模式里面的具体产品角色。抽象的人:是最早只存在于女娲头脑里的一个想法,女娲按照这个想法造出的一个一个具体的人便都符合这个抽象的人的定义。换言之,这个抽象的想法
2、规定了所有具体的人必须具有的接口。北京科技大学天津学院 信息工程系4简单工厂模式的应用北京科技大学天津学院 信息工程系5本章主要内容理解异常的概念及其分类运用 try -catch 块处理异常运用嵌套 try/catch 块处理异常运用多重 catch 块处理异常运用try -catch -finally块处理异常运用关键字 throw 和 throws 处理异常自定义异常北京科技大学天津学院 信息工程系6什么是异常?异常是Java程序运行过程中所发生的非正常事件,包括两类:Error:JVM系统内部错误、资源耗尽等严重情况,对于这类情况,程序基本上是无能为力。Exception:其它因编程错
3、误或偶然的外在因素导致的一般性问题,对于这种情况,可以用Java提供的异常处理机制进行处理。例如:对负数开平方根空指针访问试图读取不存在的文件数据库操作失败北京科技大学天津学院 信息工程系7异常举例public class ExceptionTest public int divide( int num1, int num2) int result = num1 / num2; return result; public static void main(String args) System.out.println(“该程序执行除法操作”); ExceptionTest obj = new
4、ExceptionTest(); int result = obj.divide(Integer.parseInt(args0), Integer.parseInt(args1); System.out.println(result); System.out.println(“程序执行结束”); OS!当num2等于0时,出现异常情况!程序突然终止并将控制交给操作系统该程序运行可能出现Arithmetic Exception北京科技大学天津学院 信息工程系8异常举例public class ExceptionTest public static void main(String args) S
5、tring str = null; for(int i = 0; i str.length( ); i+) System.out.println(str.charAt(i); System.out.println(“程序执行结束”); 出现NullPointerException异常public class ExceptionTest public static void main(String args) String str = null; if(str != null) /可以使用分支结构对异常进行判断 for(int i = 0; i str.length( ); i+) System
6、.out.println(str.charAt(i); System.out.println(“程序执行结束”); 解决办法程序能够正常结束北京科技大学天津学院 信息工程系9异常的层次结构ExceptionErrorRunTimeException北京科技大学天津学院 信息工程系10常见异常类文件结束EOFException找不到文件FileNotFoundExceptionI/O 异常的根类IOException数字转化格式异常NumberFormatException不能加载所需的类ClassNotFoundException方法接收到非法参数IllegalArgumentExceptio
7、n数组越界ArrayIndexOutOfBoundException尝试访问 null 对象成员NullPointerException许多 java.lang 异常的基类RuntimeException异常层次结构的父类Exception算术错误情形,如以零作除数ArithmeticException线程中断InterruptedException说 明异 常 类北京科技大学天津学院 信息工程系11异常处理的必要性程序员往往都自认为程序是正确的,而用户却是最“优秀”的测试人员。不要指望程序永远不会出错,作为程序设计人员应尽可能将程序设计键壮,不要等出来问题再去解决。用户所犯的错误都是程序员最
8、初的责任!应尽量避免出现程序意外终止,从而导致内存泄露或无意义的内存占用等问题。北京科技大学天津学院 信息工程系12Java异常处理机制当Java程序在执行过程中发生异常时,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。Java的异常处理是通过5个关键字来实现的:try,catch,throw,throws和finally。北京科技大学天津学院 信息工程系13try -catch 块处理异常t
9、rycatch异常执行 catch 后程序继续正常运行程序控制 引发代码块单 元北京科技大学天津学院 信息工程系14try -catch 块处理异常try int x = 0; int y = 0; if(x = 0) y = x / y; catch(ArithmeticException ex) System.out.println(ex.getMessage( );System.out.println(“finished”);北京科技大学天津学院 信息工程系15异常类的常用方法getMessage():在RuntimeException类中定义的方法,用于获得与异常相关的详细信息。toS
10、tring():显示简短的错误信息。printStackTrace():用于显示有关异常的信息,包括异常的原因,发生异常的代码行。北京科技大学天津学院 信息工程系16嵌套 try/catch 块处理异常String persons = “zhangsan”, “lisi”, “wangwu”;try try for(int i = 0; i 3; i+) System.out.println(personsi); catch(ArrayIndexOutOfBoundsException ex1) System.out.println(ex1.toString( ); int x = 0; in
11、t y = 0; if(x = 0) y = x / y; catch(ArithmeticException ex2) System.out.println(ex2.toString( );System.out.println(“finished”);北京科技大学天津学院 信息工程系17多重 catch 块处理异常一段代码可能会生成多个异常,使用多重catch捕获异常。当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个类型与异常类型匹配的语句。执行其中的一条 catch 语句之后,其他的 catch 语句将被忽略。使用多重 catch 语句时,异常子类一定要位于异常父类之前。S
12、tring persons = “zhangsan”, “lisi”, “wangwu”;try for(int i = 0; i 3; i+) System.out.println(personsi); int x = 0; int y = 0; if(x = 0) y = x / y; catch(ArrayIndexOutOfBoundsException ex1) System.out.println(ex1.toString( ); catch(ArithmeticException ex2) System.out.println(ex2.toString( ); catch(Exc
13、eption ex3) System.out.println(ex3.toString( );System.out.println(“finished”);北京科技大学天津学院 信息工程系18try -catch -finally块处理异常try 块finally 块catch 块 无异常异常北京科技大学天津学院 信息工程系19try -catch -finally块处理异常try int x = 0; int y = 0; if(x = 0) y = x / y; catch(ArithmeticException ex) System.out.println(ex.getMessage(
14、); finally System.out.println(“finally”);System.out.println(“finished”);北京科技大学天津学院 信息工程系20finally块的应用ServerSocket ss = new ServerSocket(0);try Socket socket = ss.accept( ); catch (IOException e) ss.close( ); /发生异常时关闭Socket连接资源e.printStatckTrace( );ss.close( ); /程序正常运行时关闭Socket连接资源ServerSocket ss = n
15、ew ServerSocket(0);try Socket socket = ss.accept( ); catch (IOException e) e.printStatckTrace( ); finally ss.close( );/无论是否发生异常都会被执行北京科技大学天津学院 信息工程系21try-catch-finally程序块中的returnpublic static int cal(int x) try int y = 0; if(x = 0) y = y / x; return x + 1; catch(ArithmeticException ex) System.out.pr
16、intln(ex.getMessage( ); finally System.out.println(finally); System.out.println(finished); return x;public static void main(String args) System.out.println(cal(0);北京科技大学天津学院 信息工程系22运用关键字 throw 处理异常try int x = 0; int y = 0;if(y = 0) throw new ArithmeticException( );y = x / y; catch(ArithmeticExceptio
17、n ex) System.out.println(ex.getMessage( );System.out.println(“finished”);北京科技大学天津学院 信息工程系23运用关键字 throws 处理异常处理异常被调用的方法调用方法处理异常可能会导致异常负责处理被调用方法可能产生的异常返回类型 被调用方法名(参数列表) throws 异常列表 / body of method返回类型 调用方法名 try / statements 被调用方法();catch(异常类 e) /statements北京科技大学天津学院 信息工程系24运用关键字 throws 处理异常public sta
18、tic int cal(int x) throws ArithmeticException int y = 0; if(x = 0) y = x / y; return x;public static void main(String args) try System.out.println(cal(0); catch(ArithmeticException ex) System.out.println(ex.getMessage( );北京科技大学天津学院 信息工程系25自定义异常Java API提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常 。自定义异常需要继承Exception 或其子类。自定义的异常不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国生脉制剂产业现状调研及投资发展潜力分析报告
- 2025-2030年中国热喷涂技术行业十三五规划与发展策略研究报告
- 2025-2030年中国汽车灯市场运营状况与发展潜力分析报告
- 2025-2030年中国氢能源行业运营现状及发展规划分析报告
- 2025-2030年中国木塑复合材料市场运行态势及发展策略分析报告
- 2025-2030年中国新癸酰氯市场运营状况与发展潜力分析报告
- 2025-2030年中国挖掘机配套市场发展状况与投资战略研究报告
- 2025-2030年中国天然气制合成油产业十三五发展规划及投资可行性分析报告
- 2025-2030年中国吡啶硫酮锌行业风险评估规划研究报告
- 2025-2030年中国取力器行业市场分析报告
- 防排烟规范培训
- DL-T 1476-2023 电力安全工器具预防性试验规程
- 飞灰处置及资源化综合利用项目可行性研究报告模板-备案拿地
- 2024年咨询工程师考试大纲
- 免疫治疗皮疹护理查房
- 小学六年级开学第一课课件二篇
- 2024年棉柔巾行业市场趋势分析
- 2024年邵阳职业技术学院单招职业技能测试题库及答案解析
- 老年期谵妄课件
- 儿童服装设计教学目标
- 河道保洁服务日常巡逻方案及措施
评论
0/150
提交评论