Java程序设计练习题8异常处理

简介: Java程序设计练习题8异常处理

判断题

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 any catch clause but a finally 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方法:

  1. 输入n,创建大小为n的int数组。
  2. 输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
  3. 使用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);
    }
  }
}
 


目录
相关文章
|
1月前
|
Java
JAVA结构化程序设计
JAVA结构化程序设计
17 0
|
19天前
|
人工智能 Java
Java练习题-输出二维数组对角线元素和
Java练习题-输出二维数组对角线元素和
21 1
|
1月前
|
Java 程序员 索引
Java中的异常处理:理解、实践与最佳实践
【2月更文挑战第26天】在Java编程中,异常处理是一个重要的概念。它不仅帮助我们在程序出错时提供有关错误的详细信息,而且还允许我们以一种结构化的方式来处理这些错误。本文将深入探讨Java中的异常处理,包括如何创建自定义异常,如何使用try-catch-finally语句块,以及如何在实际编程中应用最佳实践。
27 3
|
1月前
|
Java 编译器 程序员
Java中的异常处理:从基础到高级
【2月更文挑战第24天】本文将深入探讨Java中的异常处理,从基础的try-catch块到高级的异常处理策略。我们将了解如何使用Java的异常处理机制来提高代码的健壮性和可维护性,以及如何处理运行时和编译时的异常。
22 0
|
2天前
|
Java 数据库连接
深入理解Java异常处理机制
【4月更文挑战第24天】本文将探讨Java中的异常处理机制,包括异常的概念、分类、捕获和抛出等方面。通过深入了解异常处理机制,可以帮助我们编写更加健壮的程序,提高代码的可读性和可维护性。
|
2天前
|
Java 编译器 程序员
【Java基础】细说异常处理
【Java基础】细说异常处理
6 0
|
19天前
|
Java
Java中的throw和throws:异常处理详解
Java中的throw和throws:异常处理详解
21 0
|
19天前
|
Java
Java练习题-输出斐波那契(Fibonacci)数列
Java练习题-输出斐波那契(Fibonacci)数列
16 1
|
19天前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序
14 2
|
19天前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
20 2