判断题
R1-1
分数 1
作者 王从银
单位 吉首大学
可以使用throw语句来抛出异常。
T
F
R1-2
分数 1
作者 王从银
单位 吉首大学
一个try语句可以有多个catch语句与之对应。
T
F
R1-3
分数 1
作者 王从银
单位 吉首大学
用户可以自定义自己的异常类。
T
F
R1-4
分数 1
作者 翁恺
单位 浙江大学
There is calling-stack information stored in an Exception object.
异常对象中存储有调用堆栈信息。
T
F
R1-5
分数 1
作者 翁恺
单位 浙江大学
It is possible to have a
try
statement with out anycatch
clause but afinally
clause.T
F
R1-6
分数 1
作者 王从银
单位 吉首大学
程序运行时所产生的系统定义的异常将自动被抛出。
T
F
R1-7
分数 1
作者 王从银
单位 吉首大学
异常也是一个对象。
T
F
R1-8
分数 1
作者 王从银
单位 吉首大学
当一个方法在运行过程中产生一个异常,则这个方法会终止,但是整个程序不一定终止运行。
T
F
R1-9
分数 1
作者 王从银
单位 吉首大学
可以使用throws语句来指明方法有异常抛出。
T
F
单选题
R2-1
分数 2
作者 殷伟凤
单位 浙江传媒学院
Java异常类(Exception)是( )的子类。
A.
Exception
B.
Error
C.
RuntimeException
D.
Throwable
R2-2
分数 1
作者 郑如滨
单位 集美大学
以下对自定义异常描述正确的是
A.
自定义异常必须继承Exception
B.
自定义异常可以更加明确定位异常出错的位置和给出详细出错信息
C.
程序中已经提供了丰富的异常类,使用自定义异常没有意义
D.
自定义异常可以继承自Error
R2-3
分数 2
作者 王从银
单位 吉首大学
下列哪种异常是检查型异常,需要在编写程序时声明 ( ).
A.
FileNotFoundException
B.
ClassCastException
C.
IndexOutOfBoundsException
D.
NullPointerException
R2-4
分数 2
作者 殷伟凤
单位 浙江传媒学院
下面关于try块的说法正确的是?
A.
对抛出的异常的处理应放在try块中
B.
try块后至少应有一个catch 块
C.
try块后必须有finally块
D.
可能抛出异常的语句应放在try块中
R2-5
分数 2
作者 王从银
单位 吉首大学
getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果( )。
public void getCustomerInfo() { try { // do something that may cause an Exception } catch (java.io.FileNotFoundException ex){ System.out.print("FileNotFoundException!"); } catch (java.io.IOException ex){ System.out.print("IOException!"); } catch (java.lang.Exception ex){ System.out.print("Exception!"); } }
A.
IOException!
B.
FileNotFoundException!IOException!
C.
IOException!Exception!
D.
FileNotFoundException!IOException!Exception!
R2-6
分数 1
作者 郑如滨
单位 集美大学
以下对异常的描述不正确的有
A.
Throwable是所有异常类的父类
B.
异常分为Error和Exception
C.
Exception是所有异常类父类
D.
Exception包括RuntimeException和RuntimeException之外的异常
R2-7
分数 2
作者 殷伟凤
单位 浙江传媒学院
如下程序会抛出( )类型的异常?
public class Test { public static void main(String[] args) { String s = "abc"; System.out.println(s.charAt(3)); } }
A.
StringIndexOutOfBoundsException
B.
ArithmeticException
C.
ArrayIndexOutOfBoundsException
D.
ClassCastException
R2-8
分数 2
作者 王从银
单位 吉首大学
假设方法unsafe() 将抛出IOException, 可以填入如下代码段第1行的选项是( )。
1) 2) { if(unsafe()){//do something…} 3) else if(safe()){//do the other…} 4) }
A.
public void methodName() throws IOException
B.
public IOException methodName()
C.
public void methodName() throw IOException
D.
public void methodName()
填空题
R4-1
分数 5
作者 翁恺
单位 浙江大学
25-3 The output of the code below is
package pta代码; public class Main { static int count = 0; public static void main(String[] args) { for (;;) { try { if (count++ == 0) throw new Exception(); System.out.println(1); } catch (Exception e) { System.out.println(2); } finally { System.out.println(3); if (count == 2) break; } System.out.println(4); } } }
@@[2](1)
@@[3](1)
@@[4](1)
@@[1](1)
@@[3](1)
R4-2
分数 4
作者 翁恺
单位 浙江大学
请写出以下程序运行结果:
public class Main { public static void main(String[] args) { String s = "hello"; try { s = s+" world"; s.toUpperCase(); String[] a = s.split("o"); System.out.println(a.length); } catch (Exception e) { System.out.print(s); } finally { System.out.print(s); }}}
@@[3](2)
@@[hello world](2)
R4-3
分数 2
作者 王利
单位 沈阳师范大学
按异常处理不同可以分为运行异常、捕获异常、声明异常和
抛出异常
2 分
。
R4-4
分数 2
作者 翁恺
单位 浙江大学
请写出以下程序运行结果:
public class X { public static void main(String [] args) { try { badMethod(); System.out.print("A"); } catch (RuntimeException ex) { System.out.print("B"); } catch (Exception ex1) { System.out.print("C"); } finally { System.out.print("D"); } System.out.print("E"); } public static void badMethod() { throw new RuntimeException(); }}
BDE
2 分
R4-5
分数 2
作者 李妙妍
单位 沈阳师范大学
在Java中,
Exception
2 分
类是所有异常和错误的顶级父类。
R4-6
分数 14
作者 翁恺
单位 浙江大学
请写出以下程序运行结果:
class NoWater extends Exception {} class NoDrinkableWater extends NoWater {} public class FinallyWorks { static int count = 0; public static void main(String[] args) throws NoWater { while ( true ) { try { count++; if ( count == 1 ) { System.out.println("OK"); } else if ( count == 2 ) { System.out.println("Exception raised: NoDrinkableWater"); throw new NoDrinkableWater(); } else if ( count == 3 ) { System.out.println("Exception raised: NoWater"); throw new NoWater(); } } catch (NoDrinkableWater e) { System.out.println(e); } finally { System.out.println("finally"); if ( count == 3 ) break; } } } }
OK
2 分
finally
2 分
Exception raised: NoDrinkableWater
2 分
NoDrinkableWater
2 分
finally
2 分
Exception raised: NoWater
2 分
finally
2 分
编程题
R7-1 jmu-Java-06异常-02-使用异常机制处理异常输入 分数 5
全屏浏览题目
作者 郑如滨
单位 集美大学
使用异常处理输入机制,让程序变得更健壮。
main方法:
- 输入n,创建大小为n的int数组。
- 输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
- 使用
Arrays.toString
输出数组中的内容。
输入样例:
5 1 2 a b 4 5 3
输出样例:
java.lang.NumberFormatException: For input string: "a" java.lang.NumberFormatException: For input string: "b" [1, 2, 4, 5, 3]
代码长度限制
16 KB
时间限制
400 ms
内存限制
package pta代码; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] a = new int[n]; int k = 0; while (in.hasNext()) { try { String x = in.next(); // System.out.println(x); a[k] = Integer.parseInt(x); k++; } catch (NumberFormatException e) { System.out.println(e); } } System.out.println(Arrays.toString(a)); } }
R7-2 天不假年 分数 5
全屏浏览题目
作者 王从银
单位 吉首大学
程序填空题。根据题目要求完善下面的代码。请提交完整代码。
“今年50,明年18”是一个美好的愿望。人的年龄只能不断增长。
Person类的setAge方法用于更新年龄。
如果新的年龄比原来的年龄小,则输出B表示发现异常,否则输出A表示正常。
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); int age; age = in.nextInt(); Person p = new Person(age); age = in.nextInt(); try{ p.setAge(age); }catch(AgeException e){ } } } class Person{ int age; public Person(int age){ this.age = age; } public void setAge(int age) throws AgeException { if(this.age <=age){ this.age = age; }else{ throw new AgeException(); } } } class AgeException extends Exception{ }
输入格式:
输入在一行中给出2个绝对值不超过100的正整数A和B。
输出格式:
在一行中输出一个字符A或者B。
输入样例:
50 18
输出样例:
B
代码长度限制16 KB
时间限制400 ms
内存限制 64 MB
package pta代码; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int age; age = in.nextInt(); Person p = new Person(age); age = in.nextInt(); try { p.setAge(age); System.out.println("A"); } catch (AgeException e) { System.out.println("B"); } } } class Person { int age; public Person(int age) { this.age = age; } public void setAge(int age) throws AgeException { if (this.age <= age) { this.age = age; } else { throw new AgeException(); } } } class AgeException extends Exception { }
R7-3 成绩录入时的及格与不及格人数统计 分数 10
全屏浏览题目
作者 吴恋
单位 贵州师范学院
编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
输入格式:
从键盘中输入学生人数n
从键盘中输入第1个学生的成绩
从键盘中输入第2个学生的成绩
...
从键盘中输入第n个学生的成绩
(注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)
输出格式:
显示及格总人数
显示不及格总人数
输入样例:
在这里给出一组输入。例如:
3 100 30 60
输出样例:
在这里给出相应的输出。例如:
2 1
输入样例:
在这里给出一组输入。例如:
2 200 69 30
输出样例:
在这里给出相应的输出。例如:
200invalid! 1 1
代码长度限制16 KB
时间限制6000 ms
内存限制64 MB
package pta代码; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int k1 = 0, k2 = 0; for (int i = 0; i < n; i++) { int x = in.nextInt(); if (x < 0 || x > 100) { i--; System.out.println(x + "invalid!"); } else if (x > 0 && x < 60) k1++; else k2++; // try{ // if(x>0&&x<=100) // }catch(err e){ // } } System.out.println(k2); System.out.println(k1); } } class err extends Exception { }
R7-4 测试抛出异常 分数 10
全屏浏览题目
作者 wenyan
单位 山东科技大学
尝试构造类ArrayUtil,该类的方法int findMax(int[] arr, int begin, int end)能抛出IllegalArgumentException(表示参数错误)的方法。
正常执行要求begin<=end
如果begin>=end,抛出异常(IllegalArgumentException),异常信息为 “begin:x >= end:x”
如果begin<0,抛出异常(IllegalArgumentException),异常信息为 “begin:x < 0”
如果end>arr.length,抛出异常(IllegalArgumentException),异常信息为 “end:x > arr.length”
要求在findMax方法声明处声明此异常,在main函数里要捕获此异常,并输出异常类型(可用obj.getClass().getName())和异常信息
输入格式:
输入n,表示int数组大小
输入n个整数,放入数组。
输入m,表示begin和end的对数
输入m对整数,代表begin与end,然后调用ArrayUtils.findMax方法。
输出格式:
异常信息
数组的最大值
输入样例:
在这里给出一组输入。例如:
5 1 2 3 4 5 6 0 5 3 3 3 4 3 2 -1 3 0 6
输出样例:
在这里给出相应的输出。例如:
5 java.lang.IllegalArgumentException: begin:3 >= end:3 4 java.lang.IllegalArgumentException: begin:3 >= end:2 java.lang.IllegalArgumentException: begin:-1 < 0 java.lang.IllegalArgumentException: end:6 > arr.length
代码长度限制16 KB
时间限制400 ms
内存限制64 MB
package pta代码; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = in.nextInt(); } int m = in.nextInt(); ArrayUtil aaa = new ArrayUtil(); for (int i = 0; i < m; i++) { int low = in.nextInt(); int high = in.nextInt(); aaa.findMax(a, low, high); } } } class ArrayUtil { public ArrayUtil() { } public void findMax(int[] arr, int begin, int end) { if (begin >= end) { System.out.println("java.lang.IllegalArgumentException: begin:" + begin + " >= end:" + end); } else if (begin < 0) { System.out.println("java.lang.IllegalArgumentException: begin:" + begin + " < 0"); } else if (end > arr.length) { System.out.println("java.lang.IllegalArgumentException: end:" + end + " > arr.length"); } else { int max = -9999; for (int i = begin; i < end; i++) { if (arr[i] > max) { max = arr[i]; } } System.out.println(max); } } }