Java异常——PTA答案

单选题

关于Java中异常的叙述,正确的是:(C)。
A.异常是程序编写过程中代码的语法错误
B.异常是程序编写过程中代码的逻辑错误
C.异常出现后程序的运行马上中止
D.异常是可以捕获和处理的

以下对异常的描述不正确的有 ©
A.异常分为Error和Exception
B.Throwable是所有异常类的父类
C.Exception是所有异常类父类
D.Exception包括RuntimeException和RuntimeException之外的异常

Java异常类(Exception)是(D)的子类。(D)
A.RuntimeException
B.Exception
C.Error
D.Throwable

在异常处理时,将可能发生异常的代码放在(B)语句块中,后面紧跟着一个或多个(B)语句块,还可以再跟零个或一个(B)语句块。 (B)
A.catch、try、finally
B.try、catch、finally
C.try、finally、exception
D.exception、try、finally

关于try语句对应的多个catch子句中,若捕获的异常类型有父子类关系时,它们的排列下列哪种是正确的(B) 。 (B)
A.异常父类在先,异常子类在后
B.异常子类在先,异常父类在后
C.有继承关系的异常不能同时出现在同一个try程序段之后
D.先后顺序无所谓

在异常处理中,如释放资源、关闭文件、关闭数据库等由(C)来完成。©
A.try子句
B.catch子句
C.finally子句
D.throw子句

假设方法unsafe() 将抛出IOException, 可以填入如下代码段第1行的选项是(D)。(D)

 { if(unsafe()){//do something…}
  else if(safe()){//do the other…}
 }

A.public IOException methodName()
B.public void methodName()
C.public void methodName() throw IOException
D.public void methodName() throws IOException

对以下程序进行编译、运行结果是 ©

abstract class MineBase {
   abstract void amethod();
   static int i;
 }

  public class Mine extends MineBase{
   public static void main(String argv[]){
    int[] ar = new int[5];
    for(i = 0;i < ar.length;i++)
    System.out.println(ar[i]);
   }
  }

A.打印5个0。
B.编译出错,数组ar[]必须初始化。
C.编译出错。
D.出现IndexOutOfBoundes的异常

程序异常

public class Test {
  public static void main(String[] args) {
    try {
      String s = "5.6";
      Integer.parseInt(s); // 引起一个 NumberFormatException异常

      int i = 0;
      int y = 2 / i;
    }
    catch (Exception ex) {
      System.out.println("NumberFormatException");
    }
    catch (RuntimeException ex) {
      System.out.println("RuntimeException");
    }
  }
}

该程序会出现(D)
A.程序显示NumberFormatException。
B.程序显示RuntimeException。
C.程序显示NumberFormatExceptio,然后是RuntimeException。
D.程序编译错误。

下列程序的运行结果是(B)。

public class Test {
  public static void main(String[] args) {
    try {
      System.out.println("Welcome to Java");
      int i = 0;
      int y = 2 / i;
      System.out.println("Welcome to HTML");
    }
    finally {
      System.out.println("The finally clause is executed");
    }
  }
}

A.Welcome to Java, 然后是错误信息
B.Welcome to Java,下一行是 The finally clause is executed , 然后是错误信息.
C.替换为正确项
D.替换为错误项

Java中用来抛出异常的关键字是:(C)。©
A.try
B.catch
C.throw和throws
D.finally

填空题

请写出以下程序运行结果:

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
hello world

程序填空题

异常抛出与捕获案例–下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。
下面程序抛出了一个“异常”并捕捉它。请在横线处填入适当内容完成程序。

class Main {
    static void procedure() throws IllegalAccessException {
        System.out.println("inside procedure");
        throw new IllegalAccessException("demo");
    }

    public static void main(String args[]) {
        try {
            procedure();
        } catch (IllegalAccessException e) {
            System.out.println("捕获:" + e);
        }
    }
}

编程题

7-1 设计一个Tiangle异常类

创建一个IllegalTriangleException类,处理三角形的三边,任意两边之和小于等于第三边,则显示三条边不符合要求。
然后设计一个有三条边的Triangle的类。如果三条边不符合要求,则抛出一个IllegalTriangleException异常。
三角形的构造方法如下:

public Triangle(double side1, double side2, double side3) 
throws IllegalTriangleException {
    //实现
}

一个名为toString()的方法返回这个三角形的字符串描述。
toString()方法的实现如下所示:

return "Triangle [side1=" + side1 + ", side2=" + side2 + ", side3=" + side3 + "]";

编写一个测试程序如下,用户输入三角形的三条边,然后显示相应信息。
提交时,将此测试程序附在后面一起提交。
测试程序:

public class Main{
  public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
      double s1 = input.nextDouble();
      double s2 = input.nextDouble();
      double s3 = input.nextDouble();
      try {
         Triangle t = new Triangle(s1,s2,s3);
         System.out.println(t);
      }
      catch (IllegalTriangleException ex) {
          System.out.println(ex.getMessage());
      }
  }
}

输入格式:
输入三条边

输出格式:
如果三条边正确,则输出toString()的信息,否则,输出IllegalTriangleException: 非法的边长
例如,输入1 1 1,则输出Triangle [side1=1.0, side2=1.0, side3=1.0]
若输入 1 2 3,则输出Invalid: 1.0,2.0,3.0

输入样例:
在这里给出一组输入。例如:

1 2 3

输出样例:
在这里给出相应的输出。例如:

Invalid: 1.0,2.0,3.0

结果:

import java.util.*;

public class Main{
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    double s1 = input.nextDouble();
    double s2 = input.nextDouble();
    double s3 = input.nextDouble();
    try {
      Triangle t = new Triangle(s1,s2,s3);
      System.out.println(t);
    }catch (IllegalTriangleException ex) {
      System.out.println(ex.getMessage());
    }
  }
}

class IllegalTriangleException extends Exception{
  private double side1;
  private double side2;
  private double side3;
  
  public IllegalTriangleException(double side1, double side2, double side3) {
    super("Invalid: "+side1+","+side2+","+side3);//message是父类成员变量,使用super向上传参!
    this.side1=side1;
    this.side2=side2;
    this.side3=side3;
  }
}

class Triangle{
  private double side1;
  private double side2;
  private double side3;
  
  public Triangle(double side1, double side2, double side3) throws IllegalTriangleException{
    if((side1+side2)>side3&(side1+side3)>side2&(side2+side3)>side1) {
      this.side1=side1;
      this.side2=side2;
      this.side3=side3;
    } else {
      throw new IllegalTriangleException(side1,side2,side3);
    }
  }
  
  @Override
  public String toString(){
    return "Triangle ["+"side1="+this.side1+", side2="+this.side2+", side3="+this.side3+"]";
  }
}
/*这段代码是一个Java程序,用于判断输入的三个数值能否构成一个三角形。
如果能构成三角形,则输出三角形的边长;
如果不能构成三角形,
则抛出一个自定义的异常类IllegalTriangleException,
并输出异常信息。
IllegalTriangleException继承自Exception类,
用于表示非法的三角形。
Triangle类表示三角形,
包含三个边长的属性和一个判断是否合法的构造函数。
在Triangle类中重写了toString方法,
以便在输出对象时能够以可读的方式显示三角形的边长。*/

运行结果:

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值