《Java语言程序设计》(基础篇原书第10版)第十二章复习题答案

第十二章
12.1:它能使方法抛出一个异常给它的调用者,并由调用者处理该异常。如果没有这个能力,那么被调用的方法就必须自己处理异常或者终止该程序。被调用的方法通常不知道在出错的情况下该做些什么,这是库方法的一般情况。库方法可以检测出错误,但是只有调用者才知道出现错误时需要做些什么。异常处理最根本的优势就是将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离出来。
12.2:第一条语句:System.out.println(1 / 0);会抛出异常。
12.3:将Long.MAX_VALUE加上1会超出long值的范围,但是当前的java没有把这种情况报告为例外。
12.4:出现异常时,JVM会抛出异常,如果需要捕获异常,可以编写try-catch语句。
12.5:如果value = 30,则输出结果为:
Value is too small
Continue after the catch block

如果value = 50,则输出结果为:
Continue after the catch block
12.6:输出结果为:
a)0 1
b)0
12.7:Throwable 类是所有异常类的根。所有的 Java 异常类都直接或者间接地继承自
Throwable。这些异常类可以分为三种主要类型:系统错误、异常和运行时异常。
12.8:将抛出异常名为:
a)ArithmeticException
b)IndexOutOfBoundsException
c)IndexOutOfBoundsException
d)ClassCastException
e)NullPointerException
f)No exception
12.9:声明异常的目的是告诉java运行时系统可能会出现的异常情况,可以在方法声明中使用抛出关键字声明异常,可以声明多个异常,用逗号隔开。
12.10:由于这个方法抛出 RuntimeException (免检异常)子类 rilegalArgumentException的一个实例,所以,如果不使用 try语句,这个测试程序也能编译。如果方法抛出 RuntimeException和 Error 之外的异常(即必检异常),那么此方法就必须在 try-catch 块内调用。
12.11:使用方法中抛出语句抛出异常,即throw(exceptionName),不可以在throw语句中抛出多个异常。
12.12:关键字throw是抛出异常的关键字,关键字throws是声明异常的关键字。
12.13:
1)不会执行statement3.
2)不会执行statement4,因为try语句执行完后程序就结束了。
3)会执行statement4.
12.14:显示:RuntimeException
12.15:显示:ArithmeticException
12.16:显示:RuntimeException in method()
After the method call
12.17:getMessage()在Throwable类中被定义,以返回描述异常的字符串。
12.18:若要向控制台显示跟踪信息,可以执行的操作。
12.19:没有异常发生时,try-catch 块的存在不会引起额外的系统开销。
12.20:代码修改为:
public void m(int value) throws Exception{
if(value < 40)
throw new Exception(“value is too small”);
}
12.21:
1)如果没有异常发生,会执行statement4,也会执行statement5.
2如果异常类型是 Exceptionl, 会执行 statement4,也会执行 statements5.
3如果异常不是类型 Exceptionl,会执行 statement,不会执行 statements5.
12.22:该方法是正确的,但是有一点,不要把异常处理用作简单的逻辑测试。
public static Boolean isNumeric(String token) {
for (int I = 0; I < token.length(); i++) {
if (!(token.chatAt(i) >= ‘0’&& token.chatAt(i) <= ‘9’)) {
return false;
}
}
return true;
}
12.23:

  1. 如果没有异常发生,会执行语句 statement4,也会执行语句 statement5。
  2. 如果异常类型是 Exceptionl,会执行 statement4,也会执行 statement5.
  3. 如果异常类型是 Exception2,会执行 statement4 ,不会执行 statement5。
  4. 如果异常类型不是 Exceptionl以及 Exception2 类型的,那么会执行 statement4 ,不会执行 statement5 。
    12.24:输出结果为:
    java.lang.Exception: New info from methodl
    at ChainedExceptionDemo.methodlfChainedExceptionDemo.java:16)
    at ChainedExceptionDemo.main(ChainedExceptionDemo.java:4)
    12.26:输出结果为:
    Exception in method()
    Exception in main
    12.27:在 Windows 中目录的分隔符是反斜杠()。但是在 Java 中,反斜杠是一个特殊的
    字符,应该写成 \的形式,故改为:new File(“c:\book\test.dat”);
    12.28:创建一个file对象,利用file.exists()表示文件是否存在,file.delete()表示删除文件,file.renameTo(File)表示重命名文件名,使用file.length()表示获得文件的大小。
    12.29:不能使用File类进行输入/输出,File类可用于获取文件的属性和操作文件;不是创建一个 File 对象就是在磁盘上创建一个文件。
    12.30:创建对象 PrintWriter output = new PrintWriter(FileName);以向文件写数据。此语句可能引发异常,java迫使你编写代码来处理异常,处理它的一种方法是在方法声明中声明抛出异常。如果不调用close()方法,则可能无法正确保存数据。
    12.31:输出结果为:
    Amount is 32.320000 3.232000e+01
    Amount is 32.3200 3.2320e+01
    False
    Java
    12.32:
    public class Test {
    public static void main (String[] args) throws Exception {
    try(java.io.PrintWriter output = new java.io.PrintWriter(“temp.txt”)) {
    output.printf(“amount is %f %e\r\n”, 32.32, 32.32);
    output.pr1ntf(“amount 1s %5.4f %5.4e\r\n, 32.32,32.32);
    output.printf(”%6b\r\n",(1 > 2));
    output.printf(“%6s\r\n”,“java”);
    output.close();
    }
    }
    12.33:Scanner input = new Scanner(FileName);从文件读取数据。Main方法中的语句可能会引发异常,java你迫使编写代码来处理异常,处理异常的一种方法就是在方法声明中声明抛出异常。如果不调用close()方法,则可能无法正确保存数据。
    12.34如果试图对一个不存在的文件创建 Scanner,程序将会出现异常;如果试图对一个已经存在的文件创建 PrintWriter,则现有的文件内容将消失。
    12.35:不同平台上的行分隔符不同,windows平台上的行分隔符是\n.
    12.36:intValue = 45; doubleValue = 57.8; line = ‘’‘7’‘8’‘9’。
    12.37: intValue = 45; doubleValue = 57.8; line = ‘’
    12.38:创建一个URL对象,并使用行动Scanner(url.openStream())创建一个Scanner对象,用于读取URL流中的数据。
    12.39:有可能包含重复的URL。假设链接1不在listOfTraverseURL中,但它可能在一个页面中出现不止一次。这样的重复链接1将添加到listOfPendingURL中。
  • 23
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值