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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/22228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析Java多线程:源码级别的分析与实践

Java的多线程机制是其并发编程的核心,对于高性能和高并发应用的开发至关重要。 一、Java多线程的基础 1.1 创建线程的几种方式 在Java中,有几种创建线程的方式: 继承Thread类: class MyThread extends Thread {public void run…

LangChain框架介绍

LangChain 的核心组件 模型 I/O 封装 LLMs:大语言模型Chat Models:一般基于 LLMs,但按对话结构重新封装PromptTemple:提示词模板OutputParser:解析输出 数据连接封装 Document Loaders:各种格式文件的加载…

指纹考勤系统

目录 1.课题研究目的和内容 1.1 课题研究目的 1.2 课题研究内容 2.系统总体方案设计及功能模块介绍 2.1总体方案设计 2.2 ATK-301模块介绍 2.3 TFTLCD显示功能模块介绍 2.4 蜂鸣器报警功能模块介绍 2.5 时钟模块介绍 3.系统硬件设计与实现 3.1 系统硬件电…

控制应优先

先从大体上的去找规律,然后才是数字归纳(更为详细的),同时控制关系应该优先(这里是天数和位置)。是否涉及所有对象不是广泛,如果是具体的数值就不是广泛。

指针的认识(传值调用和传地址调用)

学习指针的目的是使用指针解决问题,那什么问题,非指针不可呢? 当要求写个函数来交换两个变量的值时,我们稍加思索,可以写成如下函数: void Swap1(int x, int y) {int tmp x;x y;y tmp; } 那么我们来进…

Linux学习笔记8

介绍man命令 在Linux中,man命令用于查看系统手册页(manual pages)。系统手册页是关于各种Linux命令、函数库以及系统调用的详尽文档,能够提供关于命令的使用方法、参数说明、示例以及其他相关信息 可以利用man xxx的命令去查找某…

QT之动态加载树节点(QTreeWidget)

之前写过一篇动态加载ComboBox,可参见下面这篇文章 QT之动态加载下拉框(QComboBox) 同理QTreeWidget也可以实现动态加载,在一些异步加载数据,并且数据加载比较耗时,非常实用。 效果 原理分析 要实现此类效…

docker镜像转移,mac Linux

起因是镜像在互联网,而公司内网没有网络,需要跨平台转移,且系统不一样,一个Arm,一个linux。正常进行后,报错系统编译问题,特将处理过程总结一下 在 mac在pull镜像的时候需要设置参数,确保下载的…

数字展示具有广阔发展空间 市场规模保持增长态势

数字展示具有广阔发展空间 市场规模保持增长态势 数字展示是指以数字图像为核心,将触摸屏、红外线感应器、三维数字图像等相结合的高层次展示行业。与传统展示方式相比,数字展示能够突破时间、空间及形态的局限,将文字、图像等各种信息转化为…

Qwen 微调LoRA之后合并模型,使用 webui 测试

Qwen 微调LoRA之后合并模型 qwen_lora_merge.py : import os from peft import AutoPeftModelForCausalLM from transformers import AutoTokenizerdef save_model_and_tokenizer(path_to_adapter, new_model_directory):"""加载模型,合…

vue 封装水球图

1、 安装 echarts 与 echarts-liquidfill pnpm i echarts pnpm i echarts-liquidfill 2、组件中引入 import * as echarts from echarts import echarts-liquidfill 3、封装通用组件 <div class"waterball-chart"><div ref"chartContainer" s…

天线对信号传输的效率影响

天线设计和选择的标准主要包括带宽、极化、方向性、物理空间和增益等方面。这些标准直接影响信号传输的效率和质量。 带宽是指特定信号的频率范围&#xff0c;它决定了天线能够覆盖的频率范围&#xff0c;从而影响信号的传输效率。极化是指天线辐射的电场方向&#xff0c;不同的…

使用 Vue 3 和 qrcode.js 开发二维码显示组件

二维码在现代应用中广泛使用&#xff0c;例如支付、身份验证、链接分享等。本文将介绍如何使用 Vue 3 和 qrcode.js 库来创建一个灵活的二维码显示组件&#xff0c;并展示如何在应用中使用它。 1. 安装必要的依赖 首先&#xff0c;我们需要安装 Vue 3 和 qrcode.js。如果你还…

从C到C++,C++入门篇(1)

1.什么是C C是一种通用编程语言&#xff0c;由Bjarne Stroustrup在1980年代初开发&#xff0c;作为C语言的扩展。 C支持多种编程范式&#xff0c;包括过程式编程、数据抽象、面向对象编程和泛型编程等。 这种语言在操作系统、游戏开发、图形界面、嵌入式系统、分布式系统、网…

变压器中的磁化和励磁电流波形

导出变压器中的磁化电流和励磁电流的图形方法具有说明性&#xff0c;因为它们使我们能够同时可视化产生这些波形的元素&#xff0c;例如磁通波形和磁性材料的典型 BH 曲线。 所得波形表明它们不是正弦波&#xff0c;并且对于励磁电流而言&#xff0c;它也不对称。 使用傅里叶…

vue2源码重写数组方法学习

在学习之前&#xff0c;我们需要问一个为什么&#xff0c;为什么vue2 源码要重写数组方法 响应式数据更新&#xff1a;通过重写数组方法&#xff0c;Vue 能够捕获对数组的变更操作&#xff08;如 push、pop、shift 等&#xff09;&#xff0c;并在数据发生变化时自动更新视图&a…

Facebook代运营 | Facebook广告投放步骤及要点

Facebook体量大&#xff0c;素材的更新频率快&#xff0c;通过Facebook进行广告投放的用户也越来越多&#xff0c;Facebook坐拥大量用户&#xff0c;同时有着非常科学的用户画像构建系统和推送机制&#xff0c;对于很多广告涉足的伙伴来说&#xff0c;更加的友好。 1. 创建广告…

Opentracing 代码Demo

背景 OpenTracing 是一个提供标准化分布式追踪功能的API和工具。它的主要作用包括: 跨系统边界追踪请求流程:OpenTracing 允许开发者跟踪一个请求从开始到结束在整个分布式系统中的所有经过的点(包括异构系统),帮助理解系统中的请求流程和服务间的相互依赖。 性能分析和瓶…

ubuntu系统 kubeadm方式搭建k8s集群

服务器环境与要求&#xff1a; 三台服务器 k8s-master01 192.168.26.130 操作系统&#xff1a; Ubuntu20.04 k8s-woker01 192.168.26.140 操作系统&#xff1a; Ubuntu20.04 k8s-woker02 192.168.26.150 操作系统&#xff1a; Ubuntu20.04 最低配置&#xff1a;2…

斯坦福 AI 团队被曝抄袭中国大模型开源成果;Zoom 创始人谈视频会议未来丨 RTE 开发者日报 Vol.218

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…