- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Java程序设计精典教程》习题答案
编著:胡伏湘,雷军环
清华大学出版社
第8章习题解答
简答题
1.什么是异常?异常产生的原因有哪些?
答:异常就是Java程序在运行过程中出现的错误。这类错误使程序非正常终止,但通过修正后还可以继续运行。
异常产生的原因有:
(1)JVM检测到非正常的执行状态,这些状态可能由以下情况引起的:
表达式违反了Java语言的语义,如除数为0
装入或链接程序时出错
超出了资源限制,如内存不足,这种异常是程序员无法预知的
(2)程序代码中的throw语句被执行
(3)因为代码段不同步而产生,可能的原因是:
Thread(线程)的stop方法被调用
JVM内部发生错误。
2.为什么Java的异常处理技术优于传统程序的异常处理技术?
答:在没有异常处理机制的程序设计语言中进行异常处理,通常是在程序设计中使用if-else或switch-case语句所能设想的到的错误情况,以捕捉程序中可能发生的错误。在这种处理方式的程序中,对异常的监视、报告和处理的代码与程序中完成正常功能的代码交织在一起,即在完成正常功能的程序的许多地方插入了与处理异常有关的程序块。这种处理方式虽然在异常发生点可以看到程序如何处理异常,但它干扰了人们对程序正常功能的理解,使程序的可读性和可维护性下降,并且由于人的思维限制,常常会遗漏一些意想不到的异常。
Java的异常处理机制是在程序中监视可能发生异常的程序块,将一个程序中的所有异常收集起来放到程序的某一段中处理,而不必在被监视的程序块中多处插入处理异常的代码,使完成功能的程序代码与进行异常处理的程序代码分开,增强了程序的可读性和可靠性,减少了编程人员的工作量,增加了程序的灵活性。此外,这种机制可以及时有效地处理程序运行中的异常,可以预防因错误的程序代码或系统错误所造成的不可预期的结果发生,并且当这些不可预期的错误发生时,异常处理机制会尝试恢复异常发生前的状态或对这些错误结果做一些善后处理。
3.在Java代码中可用来处理异常的方式有哪些?
答:在Java代码中可用来处理异常的方式有两种:
(1)在可能产生异常的方法中,采用Java语言提供的try-catch-finally语句块处理异常
(2)如果一个方法可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应声明抛弃该种异常,表明该方法将不对此类异常进行处理,而由该方法的调用者负责处理。此时需在方法声明中包含throws子句。
4.如果发生了一个异常,但没有找到适当的异常处理程序,则会发生什么情况?
答:如果发生了一个异常,但没有找到适当的异常处理程序,则Java系统会采用Java异常处理机制预设处理方法来处理异常,即一旦程序发生异常,程序就会被终止并显示相应的错误信息给用户。
5.说明throw与throws有什么不同?
答:throw与throws的不同之处在于:
throw语句是一个独立的语句,用来明确地抛出一个异常,其作用是改变程序的执行流程,使程序跳到相应的异常处理语句中执行。而throws语句总是和方法定义结合起来用,在有些情况下,不需要一个方法处理本身可能产生的异常,而是希望把异常向上移交给调用这个方法的方法来处理,就需要通过throws语句来实现。
6.在设计catch块处理不同的的异常时,一般应注意哪些问题?
答:应注意如下的问题:
(1)catch块中的语句应根据异常的不同执行不同的操作,比较通用的操作是打印异常的相关信息,包括异常名称、产生异常的方法名等。
(2)由于异常对象与catch块的匹配是按catch块的先后排列顺序进行的,所以在处理多异常进应注意认真设计各catch块的排列顺序。一般地,处理较具体和较常见的异常的catch块应放在前面,而可以与多种异常相匹配的catch块应放在较后的位置。
二、编程题
1.编写一个程序,用来将作为命令行参数输入的值转换为数字,如果输入的值无法转换为数字,则程序应显示相应的错误消息,要求通过异常处理方法解决。
class XT008201 {
public static void main(String arg[]) {
try{
int i=Integer.parseInt(arg[0]);
System.out.println(输入的字符串可以转换为一个有效数字);
}
catch(NumberFormatException e) {
System.out.println(请输入一个有效数字);
}
}
}
// 在JCreator中如何输入命令行参数?
// Configure-Options-JDK Tools
// 然后在select Tool
文档评论(0)