java异常习题

1.有关下述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()方法是由static修饰的方法通过类名进行方法调用,所以该方式是正确的。

2.下列程序的运行结果

复制代码
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

解析:FileNotFoundException为IOException的子类,IOException为Exception的子类,但是代码执行时只会捕获一个异常所以可以排除其他选项,只有A是打印一个异常。

3.下面有关JAVA异常类的描述,说法错误的是?

A. 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception

B.非RuntimeException一般是外部错误(非Error),其必须被 try{}catch语句块所捕获

C. Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉

D.RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被 try{}catch语句块所捕获

答案:BD

解析: 如果在一个方法中遇到了一个非RuntimeException,并且在方法签名中声明了这个异常(使用throws关键字),那么你就不需要在方法内部捕获它。调用这个方法的代码将需要处理这个异常(要么捕获它,要么在方法签名中声明它)。

4.实现一个简单的控制台版用户登陆程序

程序启动提示用户输入用户名密码. 如果用户名密码出错, 使用自定义异常的方式来处理

复制代码
package config;

public class Login {
    private static String userName = "admin";
    private String password = "1234";

    public static void loginInfo(String name, String password) throws UserNameException, PasswordException {

            if (!userName.equals(userName)) {
               throw new UserNameException("用户名错误");
            }
            if (!password.equals(password)) {
               throw new PasswordException("密码错误");
            }
            System.out.println("登录成功");

        }


    public static void main(String[] args) {
        try{
            loginInfo("admin","1234");
        }catch(UserNameException e){
            e.printStackTrace();
        }catch(PasswordException e){
            e.printStackTrace();
        }
    }

}

package config;


    public class UserNameException  extends Exception{
        public UserNameException(String message){
            super(message);
        }
    }


package config;
 class  PasswordException extends Exception{
    public PasswordException(String message){
        super(message);
    }

}
相关推荐
北冥湖畔的燕雀几秒前
C++日志系统:从原理到实战实现
java·开发语言
java修仙传1 分钟前
Java 实习日记:一次 Excel 导入校验 Bug 的定位与数据更新逻辑优化
java·数据库·bug·excel·后端开发
小短腿的代码世界2 分钟前
传感器暗战:Qt Sensors如何让桌面应用“感知“物理世界?
开发语言·qt
小小编程路3 分钟前
增强版 JavaScript 读取 Excel
开发语言·javascript·excel
稽稽稽稽不如人3 分钟前
《从零开始的java从入门到入土的学习生活——Java后端篇》Chapter21——Java后端篇学习记录——Redis初步入门
java·学习·生活
吃好睡好便好4 分钟前
在Matlab中绘制马鞍函数曲面图
开发语言·人工智能·学习·算法·matlab·信息可视化
测试员周周5 分钟前
【Appium 系列】第01节-Appium 是什么 — 移动端自动化的行业标准
开发语言·人工智能·python·功能测试·appium·自动化·测试用例
ID_180079054737 分钟前
淘宝店铺所有商品 API 接口:核心能力与数据返回参考
java·服务器·前端
码界筑梦坊10 分钟前
117-基于Python的印度犯罪数据可视化分析系统
开发语言·python·mysql·信息可视化·毕业设计·echarts·fastapi
Wy_编程12 分钟前
golang 基础语法和函数
开发语言·go