Java基础面试题09:Java异常处理完成以后,Exception对象会发生什么变化?
一、Java异常(Exception)基本概念
什么是异常?
简单来说,异常就是程序运行时发生了意外的“错误”或者“不正常现象”,导致程序中断。异常处理的目标是让程序在出现问题时能稳住,不会直接崩溃。
1.1 异常的分类
Java中的异常分为两大类:错误 (Error) 和 异常 (Exception)。
-
错误 (Error):
通常由硬件或操作系统问题引起,Java程序无法解决。例如:内存不足(OutOfMemoryError)。 -
异常 (Exception):
包括两种:- 运行时异常 (RuntimeException):
这类问题可以不处理(程序不会强制要求),但最好避免。例如:ArithmeticException
:除数为零。ArrayIndexOutOfBoundsException
:数组越界。NullPointerException
:对象为空时调用方法。
- 一般异常 (Checked Exception):
必须处理,否则程序无法编译。例如:IOException
:输入输出错误。ClassNotFoundException
:类或接口找不到。
- 运行时异常 (RuntimeException):
1.2 异常的处理方法
处理异常有两种主要方式:
- 直接处理:
用try...catch
块捕获并处理异常,或在finally
中清理资源。 - 抛出异常:
将异常交给调用方法的“上一层”去处理。使用throw
或throws
关键字完成。
二、异常捕获和处理
2.1 try/catch
捕获异常
try...catch
类似于“保险计划”。当程序执行到try
块时,如果一切正常,就跳过catch
块。如果有异常,程序会直接跳转到相应的catch
块处理问题。
try {// 可能出问题的代码
} catch (异常类型 e) {// 如果发生了指定类型的异常,就执行这里的代码
} finally {// 无论是否发生异常,这里的代码总会执行(比如释放资源)
}
示例代码
假设我们访问数组中的某些元素,可能会发生数组越界异常。
try {String[] greeting = {"Hello!", "Welcome!"};System.out.println(greeting[3]); // 这里会引发异常
} catch (ArrayIndexOutOfBoundsException e) {System.out.println("捕获到异常:" + e);
} finally {System.out.println("无论如何,这段代码总会执行。");
}
运行结果:
- 捕获到异常:
java.lang.ArrayIndexOutOfBoundsException
- 执行 finally 块: 打印释放资源或其他操作。
2.2 finally
的作用
finally
块保证了无论是否发生异常,特定代码一定会执行。常见用法包括关闭文件、释放锁、关闭数据库连接等。
三、throw
与throws
3.1 throw
关键字
- 用来抛出一个异常对象,一般用于方法内部。
if (value < 0) {throw new IllegalArgumentException("Value cannot be negative.");
}
3.2 示例:捕获后再次抛出异常
当catch
捕获异常但无法完全解决时,可以修改异常对象,然后抛出给上一层处理。
public static void main(String[] args) {try {methodWithException();} catch (Exception e) {System.out.println("再次捕获到异常:" + e);}
}public static void methodWithException() {try {int[] array = {1, 2};System.out.println(array[3]); // 引发异常} catch (ArrayIndexOutOfBoundsException e) {System.out.println("捕获到异常:" + e);throw e; // 再次抛出} finally {System.out.println("Finally 块中的代码总会执行。");}
}
运行结果:
- 捕获到异常:
java.lang.ArrayIndexOutOfBoundsException
- 再次捕获到异常。
四、异常处理的运行结果对比
4.1 没有异常处理时
如果没有捕获异常,程序直接中断。例如:
public static void main(String[] args) {String[] greeting = {"Hello", "Hi"};for (int i = 0; i < 4; i++) {System.out.println(greeting[i]); // i=2 时数组越界}
}
运行结果:java.lang.ArrayIndexOutOfBoundsException
,程序直接退出。
4.2 加入异常捕获后
通过try/catch
捕获异常后,程序可以正常运行,不会中断。例如:
public static void main(String[] args) {String[] greeting = {"Hello", "Hi"};for (int i = 0; i < 4; i++) {try {System.out.println(greeting[i]);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("捕获异常:" + e);} finally {System.out.println("Finally 块中的代码。");}}
}
运行结果:
- 正常打印数组内容。
- 捕获并处理越界异常。
- 每次循环都执行
finally
块中的代码。
五、总结
-
异常的意义:
通过处理异常,程序能在意外情况下继续运行,而不会中途崩溃。 -
try/catch
语法:
捕获并处理异常,catch
块里定义如何处理。 -
finally
:
任何情况下都要执行的操作,比如释放资源。 -
抛出异常:
如果catch
不能完全解决问题,可以将异常“甩锅”给上层。
通过有效的异常处理,我们可以编写更加健壮、容错性更强的程序。
最后说一句(求关注,求赞,别白嫖我)
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
本文,已收录于,我的技术网站 cxykk.com:程序员编程资料站,有大厂完整面经,工作技术,架构师成长之路,等经验分享
求一键三连:点赞、分享、收藏
点赞对我真的非常重要!在线求赞,加个关注我会非常感激!
相关文章:
Java基础面试题09:Java异常处理完成以后,Exception对象会发生什么变化?
一、Java异常(Exception)基本概念 什么是异常? 简单来说,异常就是程序运行时发生了意外的“错误”或者“不正常现象”,导致程序中断。异常处理的目标是让程序在出现问题时能稳住,不会直接崩溃。 1.1 异常…...
mysql sql语句 between and 是否边界值
在 MySQL 中,使用 BETWEEN 运算符时,边界值是包括在内的。这意味着 BETWEEN A AND B 查询会返回 A 和 B 之间的所有值,包括 A 和 B 自身。 示例 假设有一个表 employees,其中有一个 salary 列,您可以使用以下查询&am…...
Java接收LocalDateTime、LocalDatee参数
文章目录 引言I java服务端的实现1.1 基于注解规范日期格式1.2 json序列化和反序列化全局配置自动处理日期格式化II 知识扩展: 枚举的转换和序列化III 签名注意事项引言 应用场景举例:根据时间段进行分页查询数据 前后端交互日期字符串统一是yyyy-MM-dd HH:mm:ss 或者yyyy-M…...
方差分析、相关分析、回归分析
第一章:方差分析 1.1 方差分析概述 作用: 找出关键影响因素,并进行对比分析,选择最佳组合方案。影响因素: 控制因素(人为可控)和随机因素(人为难控)。控制变量的不同水平: 控制变量的不同取值…...
SQLModel入门
SQLModel 系统性指南 目录 简介 什么是 SQLModel?为什么使用 SQLModel? 安装快速入门 定义模型创建数据库和表 基本 CRUD 操作 创建(Create)读取(Read)更新(Update)删除࿰…...
单片机蓝牙手机 APP
目录 一、引言 二、单片机连接蓝牙手机 APP 的方法 1. 所需工具 2. 具体步骤 三、单片机蓝牙手机 APP 的应用案例 1. STM32 蓝牙遥控小车 2. 手机 APP 控制 stm32 单片机待机与唤醒 3. 智能家居系统 4. 智能记忆汽车按摩座椅 四、单片机蓝牙手机 APP 的功能 1. 多种控…...
PostgreSQL在Linux环境下的常用命令总结
标题 登录PgSQL库表基本操作命令新建库表修改库表修改数据库名称:修改表名称修改表字段信息 删除库表pgsql删除正在使用的数据库 须知: 以下所有命令我都在Linux环境中执行验证过,大家放心食用,其中的实际名称换成自己的实际名称即…...
Unity shaderlab 实现LineSDF
实现效果: 实现代码: Shader "Custom/LineSDF" {Properties{}SubShader{Tags { "RenderType""Opaque" }Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{floa…...
Ubuntu中的apt update 和 apt upgrade
apt update 和 apt upgrade 是 Debian 及其衍生发行版(如 Ubuntu)中常用的两个 APT 包管理命令,它们各自执行不同的任务: apt update: 这个命令用于更新本地软件包列表。当你运行 apt update 时,APT 会从配置的源&…...
Android 中 Swipe、Scroll 和 Fling 的区别
Android 中 Swipe、Scroll 和 Fling 的区别 Swipe(滑动)Scroll(滚动)Fling(甩动)三者之间的区别代码示例 (Fling)总结 在 Android 应用中,Swipe、Scroll 和 Fling 都是用户在触摸屏幕上进行的滑…...
linux基础2
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...
如何通过智能生成PPT,让演示文稿更高效、更精彩?
在快节奏的工作和生活中,我们总是追求更高效、更精准的解决方案。而在准备演示文稿时,PPT的制作往往成为许多人头疼的问题。如何让这项工作变得轻松且富有创意?答案或许就在于“AI生成PPT”这一智能工具的广泛应用。我们就来聊聊如何通过这些…...
执法记录仪数据自动备份光盘刻录归档系统
派美雅按需研发的执法记录仪数据自动备份光盘刻录归档系统,为用户提供数据自动上传到刻录服务端、数据上传后自动归类,全自动对刻录端视频文件大小进行实时监测,满盘触发刻录,无需人工干预。告别传统刻录存在的痛点,实…...
启动SpringBoot
前言:大家好我是小帅,今天我们来学习SpringBoot 文章目录 1. 环境准备2. Maven2.1 什么是Maven2.2 创建⼀个Maven项⽬2.3 依赖管理2.3.1 依赖配置2.3.2 依赖传递2.3.4 依赖排除2.3.5 Maven Help插件(plugin) 2.4 Maven 仓库2.6 中…...
重定向操作和不同脚本的互相调用
文章目录 前言重定向操作和不同脚本的互相调用 前言 声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 重定向操作和不同脚本的互相调用 1.不同脚本的互相…...
51单片机教程(九)- 数码管的动态显示
1、项目分析 通过演示数码管动态显示的操作过程。 2、技术准备 1、 数码管动态显示 4个1位数码管和单片机如何连接 a、静态显示的连接方式 优点:不需要动态刷新;缺点:占用IO口线多。 b、动态显示的连接方式 连接:所有位数码…...
golang支持线程安全和自动过期map
在 Golang 中,原生的 map 类型并不支持并发安全,也没有内置的键过期机制。不过,有一些社区提供的库和方案可以满足这两个需求:线程安全和键过期。 1. 使用 sync.Map(线程安全,但不支持过期) Go…...
机器学习之RLHF(人类反馈强化学习)
RLHF(Reinforcement Learning with Human Feedback,基于人类反馈的强化学习) 是一种结合人类反馈和强化学习(RL)技术的算法,旨在通过人类的评价和偏好优化智能体的行为,使其更符合人类期望。这种方法近年来在大规模语言模型(如 OpenAI 的 GPT 系列)训练中取得了显著成…...
泷羽sec---shell作业
作业一 写计算器 使用bc命令 需要进行安装bc 代码如下: #!/bin/bash echo "-----------------------------------" echo "输入 f 退出" echo "可计算小数和整数" echo "用法如:1.12.2" echo "------…...
华为海思2025届校招笔试面试经验分享
目前如果秋招还没有offer的同学,可以赶紧投递下面这些公司,都在补招。争取大家年前就把后端offer拿下。如果大家在准备秋招补录取过程中有任何问题,都可以私信小编,免费提供帮助。如果还有部分准备备战春招的同学,也可…...
摆脱复杂配置!使用MusicGPT部署你的私人AI音乐生成环境
文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 今天给大家分享一个超酷的技能:如何在你的Windows电脑上快速部署一款文字生成音乐的AI创作服务——MusicGPT,并且通过cpolar内网穿透工具&…...
嵌入式Linux中的GPIO编程
GPIO(General Purpose Input Output)是嵌入式系统中非常常见的一种硬件资源,它允许开发者直接控制微处理器或微控制器的引脚。通过设置这些引脚的状态,可以实现对硬件设备的控制,如LED灯的开关、传感器数据的读取等。 …...
js:函数
函数 函数:实现抽取封装,执行特定任务的代码块,方便复用 声明 函数命名规范 尽量小驼峰 前缀应该为动词,如getName、hasName 函数的调用 函数体是函数的构成部分 函数传参 参数列表里的参数叫形参,实际上写的数据叫实…...
低代码平台审批流程设计
审批流程设计 在此界面设置审批单从发起、到审批、再到结束的流转步骤。 6.1 添加节点 点击两个节点间连线的 图标可添加 审批人、抄送人、办理人、条件分支。 6.2 节点类型 提交节点 点击提交节点,可在右侧弹窗中设置提交节点的抄送人,实现审批在发…...
OpenCV相机标定与3D重建(8)相机标定函数calibrateCamera()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 从校准图案的多个视图中找到相机的内参和外参参数. cv::calibrateCamera 是 OpenCV 中用于相机标定的一个非常重要的函数。它通过一系列已知的世…...
Linux信号量的编程
一,用信号量来实现是父进程先进行,还是子进程先进性 信号量的没有P,V操作之前,我们不知道如何控制: #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>…...
“Yaker,你可以全局配置插件环境变量!“
周四周四,Vme50(bushi 大家好,这里是疯狂超级牛(功能上新版) 经常有用户问 “牛牛如何为不同插件配置相同的变量值呢?” “能有一个一波搞定插件变量的方式就好了” 超级牛听到了广大用户的声音,默默地拿起…...
SAAS美容美发系统架构解析
随着技术的不断发展,SAAS(Software as a Service,软件即服务)模式在各个行业的应用逐渐深化,美容美发行业也不例外。传统的美容美发店面通常依赖纸质记录、手动操作和复杂的管理流程,而随着SAAS平台的出现&…...
如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间
如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间 一、引言二、检查当前磁盘和分区状态1. 使用 `df` 命令检查磁盘使用情况2. 使用 `lsblk` 命令查看分区结构3. 使用 `fdisk` 或 `parted` 命令查看详细的分区信息三、扩展逻辑卷(如果使用 LVM)1. 检查 LVM …...
vscode远程连接ssh
一. 使用vscode里的ssh查件连不上远程的解决方法 删除Windows上的known_host文件,该文件会在连接之后自动生成,用于验证远程服务器的身份。 konwn_host和id_rsa,id_rsa.pub的关系 (1)konwn_host用于客户端验证远程服务…...
设计类电子书网站/软文营销策划方案
方法二:遮盖法(常用)开始前,请准备迷彩用的四种颜色,进行反向上色的遮盖法。裁剪目标数码漏喷作为模板,放在遮盖纸上固定位置,用工笔刀在镂空位置刻出数码方格(或者自行裁剪3mm的数码迷彩方块)保留数码方块,…...
网络营销外包公司招聘/网站关键字排名优化
M1相二氧化钒VO2单晶薄膜 钒氧化物高质量外延单晶薄膜 钒氧化物是一种极其复杂的金属氧化物,且具有丰富的相结构,每一种相都有其独特的用途,如VO2高温R相到低温M相之间发生结构转变同时伴随着4-5量级的电阻率变化,高温下的VO2薄膜…...
免费建站软件排行榜/网址大全下载到桌面
注解注入失败有很多种情况,我这里列举其中一种 我直接删掉了SpringBootApplication()括号中的代码,直接就解决了 你可以看看你的启动注解中是否添加了别的代码 我这个比较偏,希望不会有人用到 你的问题可能也会和我相似,启动注…...
网站建设的构思/腾讯企业邮箱登录入口
一提到iPhone很自然而然的就会想到流畅,顺滑如斯,虽然近几年安卓手机也不卡,但是和iOS的流畅还是有很大差别的,说道这里使用安卓的小伙伴肯定会说,安卓现在比iOS都要流畅,安卓早已不是原来的安卓。但是我想…...
什么网站做微信公众账号/网络营销课程个人总结3000字
原因:音频编码原来为AMR,ios那边貌似不支持这种音频编码 VideoAbsActivity.java 加了 mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 将音频录制格式从默认…...
网站怎样做百度推广计划/网络营销的特点不包括
CDC::GetDeviceCaps()物理长度与屏幕像素间的转换 作用:读取DC的一些打印区域信息,主要是像素和英寸方面的数据. 声明:GetDeviceCaps(int ) 使用例子://所有像素数int pagecxdc.GetDeviceCaps(HORZRES);int pagecydc.GetDeviceCaps(VERTRES); //即每英寸点数short cxInch dc.G…...