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

}
相关推荐
乌暮5 分钟前
请求进门先安检:Spring 拦截器与统一功能实战指南
java·开发语言·后端·学习·spring
学长毕设13 分钟前
基于SpringBoot的烘焙商品商品系统-附源码
java·spring boot·后端
এ慕ོ冬℘゜36 分钟前
JS 事件循环、宏任务微任务:单线程底层原理 + 执行顺序
开发语言·javascript·ecmascript
其实防守也摸鱼38 分钟前
Chrome 扩展安全攻防实录:从攻击面到防御实践
开发语言·前端·网络·chrome·安全·web安全·php
web打印社区42 分钟前
Lodop排障总纲-常见报错一张表
开发语言·前端·javascript·chrome·websocket
金銀銅鐵1 小时前
[Java] 用纯 Swing 做一个《論語·學而》阅读器
java·ai编程·交互设计
艾伦_耶格宇2 小时前
【kubernetes - 1.28版本】-11 K8S核心组件
java·容器·kubernetes
Dxy12393102162 小时前
JS AES加密详解
开发语言·javascript·ecmascript
2301_780789662 小时前
深度伪造即服务:新型网络诈骗的“完美面具”与识别之道
java·网络·ddos
信息安全失业大专人员2 小时前
每日了解一个智能体-WorkBuddy
开发语言·ai·c#·智能体