认识异常练习题

本文介绍了Java的异常处理机制,强调finally块的执行无需条件,catch块用于捕获特定类型的异常。文章通过示例解释了静态方法的调用方式,以及如何处理FileNotFoundException和IOException等异常。同时,讨论了finally块在资源管理中的作用,如关闭文件或数据库连接。此外,还提到了自定义异常在用户登录程序中的应用。
摘要由CSDN通过智能技术生成
1 关于Java的异常处理机制的叙述哪些正确?
A.如果程序发生错误及捕捉到异常情况了,才会执行finally部分
B.其他选项都不正确
C.当try区段的程序发生异常且被catch捕捉到时,才会执行catch区段的程序
D.catch部分捕捉到异常情况时,才会执行finally部分

答案:C

原因:A:finally的执行是不需要条件的,不会出现选项所示的前提条件

D:原因同A

2 有关下述Java代码描述正确的选项是____。
public class TestClass {
  private static void testMethod(){
    System.out.println("testMethod");
  }
  public static void main(String[] args) {
    ((TestClass)null).testMethod();
  }
}
A.编译不通过
B.编译通过,运行异常,报NullPointerException
C.编译通过,运行异常,报IllegalArgumentException
D.编译通过,运行异常,报NoSuchMethodException
E.编译通过,运行异常,报Exception
F.运行正常,输出testMethod

答案:F

原因:testMethod方法的调用,使用类名来调用即可,它属于类方法。testMethod被private修饰,它不依赖与任何对象。((TestClass)null).testMethod();其中的null表示不指向任何对象。可以正常调用。

3 下列程序的运行结果
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.IOException!Exception!
C.FileNotFoundException!IOException!
D.FileNotFoundException!IOException!Exception!

答案:A

原因:// do something that may cause an Exception表示会抛出某一个异常,而不是表示会抛出Expection异常。只能同时捕捉到一个异常。所以选A。

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

答案:C

5 下面有关JAVA异常类的描述,说法错误的是
A. 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception
B.非RuntimeException一般是外部错误(非Error),其必须被 try{}catch语句块所捕获
C. Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉
D.RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被 try{}catch语句块所捕获

答案:B、D

原因:B:非RuntimeException一般是编译时期的异常或受查异常,它需要被 try{}catch语句块所捕获,不是必须。或者通过throws在函数声明的地方来声明一下这个异常。

D:最后半句,不是必须被 try{}catch语句块所捕获

6 实现一个简单的控制台版用户登陆程序, 程序启动提示用户输入用户名密码. 如果用户名密码出错, 使用自定义异常的方式来处理

答案:

import sun.security.util.Password;

import java.util.Scanner;

public class TestDemo {
    public static String name="豆豆";//用户名
    public static String password="12345";//密码

    public static void main(String[] args) throws PasswordException, NameException {
        System.out.println("请输入用户名:");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        System.out.println("请输入用户密码:");
        String password=scanner.nextLine();
        compare(name,password);
    }

    public static void compare(String name,String password) throws NameException, PasswordException {
        if (!TestDemo.name.equals(name)) {
            throw new NameException("用户名错误");
        } else if (!TestDemo.password.equals(password)) {
            throw new PasswordException("用户密码错误");
        } else {
            System.out.println("登录成功");
        }
    }
    public static class NameException extends Throwable {
        public NameException(String s) {
            super(s);
        }
    }
    public static class PasswordException extends Throwable {
        public PasswordException(String s) {
            super(s);
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值