第五讲异常处理试题.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为什么程序需要出错处理 任何语言的程序员都尽量开发没有错误的程序、永远不会崩溃的程序,可以处理任何情况的程序,愿望是好的,但这种程序是不存在的。 错误的产生是无法避免的 由人写出的代码中包含bug。 正常的程序运行时必然要与外界交互。而外部环境是程序无法完全控制的,在真正的程序中,因为程序员不能预测所遇到的每种情况(如要网络连接中断),或者因为情况超过了程序员的控制(如用户输入了非法数据),程序总会出现这样那样的问题。 通常,程序中出错的情况有以下几类: 环境错误(环境错误是无法避免的,需要程序中做出特殊处理) 输入错误:如用户输入错误、文件读入错误。 设备错误:如打印机卡纸。 物理限制:硬盘空间用尽,内存耗尽。 代码错误(代码错误可以改正,但一般难以查找) 无效的数组下标。 使用空引用访问对象。 出现错误后,好的程序应该能做到以下几点: 通知用户发生了错误 允许用户保存当前的工作 允许用户顺利终止程序 异常处理机制 异常处理方式的优点 传统方法将大部分精力花在出错处理上了;而异常方式则可以先写出正常流程,再添加错误处理程序。 传统方法将错误处理和正常处理流程混在一起,造成程序可读性差;而异常方式则是互相独立的,程序可读性好。 传统方法都是使用分支语句来处理错误;而异常方式则按错误类型和错误差别分组。 传统方法出错返回信息量太少,通常只有一个数字作为错误代号;而异常方式返回的是一个对象,可以传递各种信息。 传统方法只把能够想到的错误考虑到,对以外的情况无法处理;而异常方式则能够部分地处理这些情况,如异常方式中可以定义不管发生何种情况一定会执行的代码。 (2)Java语言提供了try-catch语句,使用该语句可以明确地捕捉到某种类型的异常,并按我们的要求加以适当的处理,这才是发挥异常处理机制的最佳方式。 import java.util.*; public class ExceptionDemo { public static void main(String args[]) { int x; Scanner in = new Scanner(System.in); x = in.nextInt(); try{ System.out.println(10+/+x+ is +10/x); }catch(ArithmeticException e){ System.out.println(e); } } } 异常的处理原则 将错误沿调用堆栈向上传递 向上传递异常 各类异常的处理 几种预定义异常 抛出异常 自定义异常 finally块 try语句可以带有finally块,表示一定执行的程序块,不管发生不发生异常,也不管发生何种类型的异常。 finally块为例外处理提供一个统一的出口,使得在控制流转到程序的其他部分以前,能够对程序的状态作统一的管理,比如关闭文件或释放其他系统资源。实际使用中finally紧接于try-catch语句的最后一个catch块,基本语法如下: 不要进行小粒度的异常处理 异常总结 作业五 异常、错误、运行时异常的差别? 品尝饮料 ?要求?: 使用Scanner接收命令行参数(饮料类型),输出该饮料类型的味道,如当输入参数为1时,结果见图1:? ???如果没有该种饮料,结果见如图2:? ?推荐实现步骤? 1、?建立一个Java抽象类Drink,应当:? a、?声明一个抽象方法taste(),该方法负责输出饮料的味道; b、??声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶); c、?声明静态方法getDrink(int?drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。该方法要求声明DrinkNotFoundException,当没有相对应的饮料类型时,抛出该异常。? 2、?建立Drink的具体子类:? a、?分别建立Drink的子类:Coffee(代表咖啡),Beer(代表啤酒),Milk(代表牛奶);? b、?实现taste()方法,要求在控制台打印各自的味道特征。? 3、?建立异常类DrinkNotFoundException? a、?继承Exception? b、?在Drink的方法getDrink(int?drinkType)中声明引发DrinkNotFoundException异常,当传入的参数没有相对应的饮料类型时,抛出异常。? c、?在使用getDrink方法的类中捕捉该异常。? 4、?

文档评论(0)

w3388825 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档