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);
    }
  }
}
 


目录
相关文章
|
19天前
|
Java 开发者
Java中的异常处理:从基础到高级
在Java编程的世界里,异常处理是一块基石,它确保了程序的健壮性和稳定性。本文将带你从异常的基础概念出发,逐步深入到高级处理技巧,通过实例展示如何在Java中有效管理和处理异常。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
18天前
|
Java 程序员
Java编程中的异常处理:从基础到高级
在Java的世界中,异常处理是代码健壮性的守护神。本文将带你从异常的基本概念出发,逐步深入到高级用法,探索如何优雅地处理程序中的错误和异常情况。通过实际案例,我们将一起学习如何编写更可靠、更易于维护的Java代码。准备好了吗?让我们一起踏上这段旅程,解锁Java异常处理的秘密!
|
16天前
|
Java
Java 异常处理:11 个异常处理最佳实践
本文深入探讨了Java异常处理的最佳实践,包括早抛出晚捕获、只捕获可处理异常、不忽略异常、抛出具体异常、正确包装异常、记录或抛出异常但不同时执行、不在finally中抛出异常、避免用异常控制流程、使用模板方法减少重复代码、抛出与方法相关的异常及异常处理后清理资源等内容,旨在提升代码质量和可维护性。
|
18天前
|
安全 Java 数据库连接
Java中的异常处理:理解与实践
在Java的世界里,异常处理是维护代码健壮性的守门人。本文将带你深入理解Java的异常机制,通过直观的例子展示如何优雅地处理错误和异常。我们将从基本的try-catch结构出发,探索更复杂的finally块、自定义异常类以及throw关键字的使用。文章旨在通过深入浅出的方式,帮助你构建一个更加稳定和可靠的应用程序。
30 5
|
17天前
|
Java 程序员
深入理解Java异常处理机制
Java的异常处理是编程中的一块基石,它不仅保障了代码的健壮性,还提升了程序的可读性和可维护性。本文将深入浅出地探讨Java异常处理的核心概念、分类、处理策略以及最佳实践,旨在帮助读者建立正确的异常处理观念,提升编程效率和质量。
|
18天前
|
Java 开发者 UED
深入探索Java中的异常处理机制##
本文将带你深入了解Java语言中的异常处理机制,包括异常的分类、异常的捕获与处理、自定义异常的创建以及最佳实践。通过具体实例和代码演示,帮助你更好地理解和运用Java中的异常处理,提高程序的健壮性和可维护性。 ##
42 2
|
18天前
|
Java 开发者
Java中的异常处理机制深度剖析####
本文深入探讨了Java语言中异常处理的重要性、核心机制及其在实际编程中的应用策略,旨在帮助开发者更有效地编写健壮的代码。通过实例分析,揭示了try-catch-finally结构的最佳实践,以及如何利用自定义异常提升程序的可读性和维护性。此外,还简要介绍了Java 7引入的多异常捕获特性,为读者提供了一个全面而实用的异常处理指南。 ####
39 2
|
18天前
|
Java 开发者
Java 中的异常处理:不仅仅是 try-catch
在Java的世界里,异常处理是代码的守护神,它保护着程序不会因为意外错误而崩溃。但异常处理远不止try-catch那么简单。本文将深入探讨Java的异常处理机制,从基本的try-catch到更复杂的自定义异常和finally块的使用,带你理解如何在Java中优雅地处理错误。
49 1
|
21天前
|
Java 程序员 UED
深入理解Java中的异常处理机制
本文旨在揭示Java异常处理的奥秘,从基础概念到高级应用,逐步引导读者掌握如何优雅地管理程序中的错误。我们将探讨异常类型、捕获流程,以及如何在代码中有效利用try-catch语句。通过实例分析,我们将展示异常处理在提升代码质量方面的关键作用。
31 3
|
16天前
|
Java API 开发者
深入理解Java中的异常处理机制
本文探讨了Java编程语言中异常处理的核心概念,包括异常类型、异常捕获与抛出、以及最佳实践。通过分析常见的异常场景和处理策略,旨在帮助开发者更好地理解和运用异常处理机制,提高代码的健壮性和可维护性。文章不仅涵盖了基本的try-catch结构,还深入讨论了自定义异常的创建与使用,以及finally块的重要性和应用。此外,还将介绍一些高级技巧,如多异常捕获和嵌套异常处理,为读者提供全面的技术指导。
66 0
下一篇
DataWorks