版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、异常和垃圾收集,第五章,2,回顾,类中的静态成员属于类。 final 修饰符可应用于类、方法和变量。 定义抽象类的目的是提供可由其子类共享的一般形式。 接口就是需要由其他类实现的行为模板。 访问控制级别:public、protected、缺省、private 封装类就是封装基本数据类型的类 。 内部类指嵌入外部类内的类。,3,目标,了解异常的定义 了解异常的分类 掌握 try、catch 和 finally 语句的用法 掌握throw、throws子句的用法 掌握如何定义自己的异常 了解 Java 的垃圾收集机制,4,什么是异常,运行时发生的错误称为异常。处理这些异常就称为异常处理。 一旦引发
2、异常,程序将突然中止,且控制将返回操作系统。 发生异常后此前分配的所有资源都将保留在相同的状态,这将导致资源漏洞。,5,Java异常处理基础,Java异常处理机制采用一个统一和相对简单的抛出和处理错误的机制。如果一个方法本身能引发异常,当所调用的方法出现异常时,调用者可以捕获异常使之得到处理;也可以回避异常,这时异常将在调用的堆栈中向下传递,直到被处理。,6,异常体系结构,所有异常类型都是 内置类Throwable的子类,用于Java运行时系统 来显示与运行时系 统本身有关的错误,用于用户程序可能 捕获的异常,也是用来创建用户异常类型子类的类。,Error类对象由Java虚拟机生成并抛出; E
3、xception类对象由应用程序处理或抛出。,7,常见异常及其用途 2-1,8,常见的异常及其用途 2-2,9,异常处理模型,由五个关键字 try、catch、throw、throws 和 finally 处理。 Java 中可用于处理异常的两种方式: 自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内。 回避异常:在方法声明中包含 throws 子句,通知潜在调用者,如果发生了异常,必须由调用者处理。,10,try - catch 块示例,public class ExceptionDemo public static void main(Str
4、ing args) try int c= calculate(9,0); System.out.println(c); catch (Exception e) System.err.println(发生异常: + e.toString(); e.printStackTrace(); static int calculate(int a, int b) int c = a/b; return c; ,调用函数calculate, 将引发一个异常,在catch块中处理异常,输出 结果,11,多个 catch 块,单个代码片段可能会引起多个错误。 可提供多个 catch 块分别处理各种异常类型。,.
5、 . . try catch(ArrayIndexOutOfBoundsException e) catch(Exception e) .,ArrayIndexOutOfBoundsException类为 Exception 类的子类,但是如果异常 属于ArrayIndexOutOfBoundsException类将执行第一个 catch 块,之后控制 将转向try/catch块之后的语句,所以始终不会执行第二个 catch 块。,12,多个 catch 块示例,class Catch22 public static void main(String args) try String num=
6、args0; int numValue=Integer.parseInt(num); System.out.println(平方为 +numValue*numValue); catch(ArrayIndexOutOfBoundsException ne) System.out.println(未提供任何参数!); catch(NumberFormatException nb) System.out.println(不是数字!); ,13,嵌套的 try - catch 块,有时,块的一部分引起一个错误,而整个块可能又引起另一个错误。在此情况下,需要将一个异常处理程序嵌套到另一个中。 在使用嵌套
7、的try块时,将先执行内部 try 块,如果没有遇到匹配的 catch 块,则将检查外部 try 块的 catch 块。,14,finally 块,确保了在出现异常时所有清除工作都将得到处理 与 try 块一起使用 无论是否出现异常,finally块都将运行,15,finally 块 示例,class FinallyDemo int no1,no2; FinallyDemo(String args) try no1 = Integer.parseInt(args0); no2 = Integer.parseInt(args1); System.out.println(相除结果为 +no1/no
8、2); catch(ArithmeticException i) System.out.println(不能除以 0); finally System.out.println(Finally 已执行); public static void main(String args) new FinallyDemo(args); ,16,使用 throw,异常是通过关键字 throw 抛出,程序可以用throw语句引发明确的异常。如: try if(flag0) throw new NullPointerException(); throw语句的操作数一定是Throwable类类型或Throwable
9、子类类型的一个对象。,17,使用 throws,如果一个方法可能导致一个异常但不处理它,此时要求在方法声明中包含 throws 子句,通知潜在调用者,如果发生了异常,由调用者处理。 一个throws子句列举了一个方法可能引发的所有异常类型。 这对于除Error或RuntimeException及它们子类以外类型的所有异常是必要的。,18,使用 throws示例,class ThrowsDemo static void throwOne() throws IllegalAccessException System.out.println(在throwOne中.); throw new Illeg
10、alAccessException(非法访问异常); public static void main(String args) try throwOne(); catch(IllegalAccessException e) System.out.println(捕获+e); ,在该方法中没有处 理异常,只是声明 可能引发的异常,在throwOne方法 的调用函数中捕 获并处理异常,19,用户自定义的异常,内置异常不可能始终足以捕获所有错误,因此需要用户自定义的异常类 用户自定义的异常类应为 Exception 类(或者Exception 类的子类)的子类 创建的任何用户自定义的异常类都可以获得
11、 Throwable类定义的方法,class ArraySizeException extends NegativeArraySizeException ArraySizeException() super(“您传递的是非法的数组大小”); ,该类是Exception的子类,20,使用用户自定义的异常示例,class UserExceptionDemo int size, array; UserExceptionDemo(int s) size = s; try checkSize(); catch(ArraySizeException e) System.out.println(e); vo
12、id checkSize() throws ArraySizeException if(size 0) throw new ArraySizeException(); array = new intsize; for(int i = 0; i size; i+) arrayi = i+1; System.out.print(arrayi+ ); public static void main(String arg) new UserExceptionDemo(Integer.parseInt(arg0); ,21,垃圾收集 2-1,垃圾收集是可将分配给对象但不再使用的内存回收或释放的过程 Ja
13、va 将自动释放不再使用的内存 如果一个对象没有指向它的引用或将其赋值为 null,则此对象将适于进行垃圾收集,22,垃圾收集 2-2,垃圾收集器将作为优先级低的单独线程运行 可通过下列方式关闭应用程序中的垃圾收集 java noasyncgc 如果关闭了垃圾收集,程序极有可能会因为内存在某个时刻耗尽而失败,23,使用 finalize 方法,Java 提供了一种与 C+ 语言中的析构器相似的方式,可用于在控制返回操作系统前完成清除过程 如果存在 finalize(),它将在垃圾收集前被执行一次,而且每个对象仅执行一次 protected void finalize() throws Throwable 可以建议垃圾收集,但并不能保证它何时会发生,24,总结 2-1,运行时发生的错误称为异常。 必须捕获引发的每个异常,否则应用程序不会正常中止。 异常处理允许在一个地方集中进行错误处理。这使得可以创建功能强大且健壮的代码。 Jav
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务信息公开制度
- GB∕T33000-2025 大中型企业安全生产标准化管理体系要求要素“LS-PDCA运行模式”应用操作清单(雷泽佳编制-2026A0)
- 护理评估中的持续改进
- 2026山东济南市属事业单位招聘初级综合类岗位人员111人参考考试题库附答案解析
- 2026福建师范大学实验幼儿园招聘劳务派遣人员1人参考考试题库附答案解析
- 2026江西吉安吉州区兴泰科技股份有限公司向社会招募就业见习人员参考考试题库附答案解析
- 河南投资集团2026届校园备考考试试题附答案解析
- 2026广西来宾市象州县第四幼儿园招聘幼儿园教师岗位见习生2人备考考试题库附答案解析
- 2026年安阳市龙安区人社局招聘社区人社服务专员(原人社协管员)8人备考考试试题附答案解析
- 2026中信银行成都分行公司客户经理社会招聘参考考试题库附答案解析
- 城市道路智慧路灯项目投标方案(技术标)
- 校车购买合同协议书
- 历史课堂教学改进的几点措施
- 1500V储能系统全场景解决方案与典型案例分享
- 公路路面煤矸石基层应用技术规范(DB15-T 3122-2023)
- 大学计算机基础操作题(一)
- AQ-T7009-2013 机械制造企业安全生产标准化规范
- 小学美术与心理健康的融合渗透
- 2023年上海铁路局人员招聘笔试题库含答案解析
- 质量源于设计课件
- 2023届高考语文复习-散文专题训练-题目如何统摄全文(含答案)
评论
0/150
提交评论