Java高频面试之SE-16
hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶
Java中异常的处理方式有哪些?
在 Java 中,异常的处理方式主要有以下几种:
1. 使用 try-catch 语句
try-catch 结构是 Java 异常处理的基本方式。可以将可能抛出异常的代码放在 try 块中,并在 catch 块中处理这些异常。
try {// 可能抛出异常的代码
} catch (ExceptionType e) {// 处理异常
}
可以有多个 catch 块来捕获不同类型的异常。
try {// 可能抛出异常的代码
} catch (IOException e) {// 处理 IO 异常
} catch (SQLException e) {// 处理 SQL 异常
} catch (Exception e) {// 处理其他异常
}
2. 使用 finally 块
finally 块用于放置无论如何都会执行的代码,通常用于释放资源,比如关闭文件流或数据库连接。
try {// 可能抛出异常的代码
} catch (Exception e) {// 处理异常
} finally {// 清理资源,例如关闭流或数据库连接
}
3. 使用 try-with-resources
从 Java 7 开始,try-with-resources 语法允许在声明资源的同时自动管理其关闭。这对于处理如文件流、网络连接等可关闭的资源尤为重要。
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {// 使用 br 读取文件内容
} catch (IOException e) {// 处理 IO 异常
}
4. 抛出异常
使用 throw 语句可以主动抛出异常。可以抛出系统提供的异常,也可以抛出自定义异常。
throw new IllegalArgumentException("Invalid argument");
在方法声明中使用 throws 关键字指明该方法可能抛出的异常,这样调用该方法的代码就必须处理这些异常。
public void myMethod() throws IOException, SQLException {// 可能抛出 IO 和 SQL 异常的代码
}
5. 自定义异常
可以创建自己的异常类,以满足特定需求。自定义异常类通常继承 Exception 或 RuntimeException。
public class MyCustomException extends Exception {public MyCustomException(String message) {super(message);}
}
6. 记录异常
通过日志记录异常信息可以帮助开发者追踪问题,常用的日志记录框架有 Log4j、SLF4J 等。
try {// 可能抛出异常的代码
} catch (Exception e) {logger.error("An error occurred", e);
}
7. 创建全局异常处理机制
在大型应用中,常常需要将异常处理集中到一个地方,例如使用 Spring 的全局异常处理机制,使用 @ControllerAdvice 和 @ExceptionHandler 注解来集中处理控制器中的异常。
@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception e) {return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);}
}
Java中的IO流体系说一下
Java中的IO流体系是用于处理输入与输出的类库,提供了对数据的读写操作。Java的IO流体系分为几种主要的类和接口,通过这些类和接口,开发者可以进行文件操作、数据读取、字符处理等。大体上来说,Java IO流可以分为以下几种类型:
1. 字节流和字符流
-
字节流(InputStream 和 OutputStream)
字节流用于处理所有类型的 I/O,包括音频、视频和其他二进制数据。主要的类包括:InputStream:字节输入流的抽象类。OutputStream:字节输出流的抽象类。- 常用的子类:
FileInputStream:用于从文件中读取字节。FileOutputStream:用于向文件中写入字节。BufferedInputStream:为其他输入流提供缓冲功能,以提高效率。BufferedOutputStream:为其他输出流提供缓冲功能。
-
字符流(Reader 和 Writer)
字符流专门用于处理字符数据。它们可以方便地处理文本文件和字符编码。主要的类包括:Reader:字符输入流的抽象类。Writer:字符输出流的抽象类。- 常用的子类:
FileReader:用于从文本文件中读取字符。FileWriter:用于向文本文件中写入字符。BufferedReader:为字符输入流提供缓冲功能,常用于按行读取文本。BufferedWriter:为字符输出流提供缓冲功能。
2. 标准输入和输出
Java 提供了一种便捷的方式来处理标准输入和输出:
System.in:标准输入流,通常与键盘输入相关联,可以被视为一个InputStream。System.out:标准输出流,通常与控制台输出相关联,可以被视为一个OutputStream。
3. 数据流
Java 提供了数据流(Data Input and Output)类,用于高效地读写基本数据类型(如 int、float、char等):
DataInputStream:用于从输入流中读取基本数据类型。DataOutputStream:用于向输出流中写入基本数据类型。
4. 对象流
Java 的对象流(Object Input/Output)允许你序列化和反序列化 Java 对象:
ObjectInputStream:用于从输入流中读取对象。ObjectOutputStream:用于向输出流中写入对象。- 序列化和反序列化允许将对象的状态写入流中以在后续恢复。
5. 内存流
内存流使用内存作为输入和输出的源,与磁盘操作相对:
ByteArrayInputStream:用于在内存中读取字节。ByteArrayOutputStream:用于在内存中写入字节。CharArrayReader和CharArrayWriter:用于在内存中读取和写入字符。
6. NIO(New IO)
Java 1.4 引入了 NIO,为高效的 I/O 操作提供了更强大的功能,并支持非阻塞 I/O:
- Channel:通道代替了传统的流,提供了双向传输的能力。
- Buffer:用于在通道和数据源之间存储数据的容器。
- Selectors:可以注册多个通道以处理多个输入/输出事件,从而实现非阻塞 I/O。
7. 过滤流
过滤流用于对输入和输出流进行包装,提供额外的功能,例如:
BufferedInputStream:在字节输入流中添加缓冲。从而提高读操作的效率。BufferedOutputStream:在字节输出流中添加缓冲。PrintWriter:用于字符输出,可以直接写入格式化的文本。

图标更换
https://pan.quark.cn/s/d366949260e9
IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD

相关文章:
Java高频面试之SE-16
hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 Java中异常的处理方式有哪些? 在 Java 中,异常的处理方式主要有以下几种: 1. 使用 try-catch 语句 …...
三分钟简单了解一些HTML的标签和语法_01
1.图片建议建立一个文件夹如下图所示 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"keywords"><title>魔神羽落</title><style>.testone{background-color: #ff53e…...
缓存-Redis-数据结构-redis哪些数据结构是跳表实现的?
在 Redis 中,跳表(Skip List) 被用于实现 有序集合(Sorted Set) 数据结构。以下是对此实现的详细解释: Redis中的有序集合(Sorted Set) 有序集合(Sorted Set࿰…...
Linux 系统错误处理简介
Linux 系统错误处理简介 1. errno:错误代码的载体2. strerror():错误信息的翻译官3. perror():便捷的错误信息输出4. 系统调用与库函数的区别5. 错误处理的最佳实践 在 C/C 程序开发中,我们经常需要处理各种错误情况 Linux 系统提…...
逐笔成交逐笔委托Level2高频数据下载和分析:20250122
逐笔委托逐笔成交下载 链接: https://pan.baidu.com/s/1WP6eGLip3gAbt7yFKg4XqA?pwd7qtx 提取码: 7qtx Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交和逐笔委托这种每一笔的毫秒级别的数据可以分析出很多有用的点,包括主力意图,虚假动作&…...
第18个项目:微信开发入门:获取access_token的Python源码
源码下载地址:https://download.csdn.net/download/mosquito_lover1/90301829 功能特点: 输入AppID和AppSecret,点击按钮后异步获取access_token 1、自动保存功能: 当用户输入或修改 AppID 和 AppSecret 时自动保存 获取到新的 access_token 时自动保存 所有数据都保存在…...
如何将自己本地项目开源到github上?
环境: LLMB项目 问题描述: 如何将自己本地项目开源到github上? 解决方案: 步骤 1: 准备本地项目 确保项目整洁 确认所有的文件都在合适的位置,并且项目的 README.md 文件已经完善。检查是否有敏感信息࿰…...
Windows远程连接Docker服务
问题背景 本地开发了一个SpringBoot项目,想通过Docker部署起来,我本地是Window11系统,由于某些原因不能虚拟化并且未安装Docker-Desktop,所以我在想有没有办法本地不需要虚拟化也不需要安装Docker-Desktop来实现支持Docker命令远…...
在Qt中实现点击一个界面上的按钮弹窗到另一个界面
文章目录 步骤 1:创建新窗口类步骤 2:设计窗口的 UI步骤 3:设计响应函数 以下是一个完整的示例,展示在Qt中如何实现在一个窗口中通过点击按钮弹出一个新窗口。 步骤 1:创建新窗口类 假设你要创建一个名为 WelcomeWidg…...
嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础
嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础 目录 1.NAND FLASH 和NOR FLASH异同 ? 2.CPU,MPU,MCU,SOC,SOPC联系与差别? 3.什么是交叉编译? 4.为什么要交叉编译? 5.描述一下嵌入式基于ROM的运行方式和基于RAM的运行方式有什么区别? 1…...
全氟醚橡胶发展前景:高性能密封材料的璀璨之星
在当今科技飞速发展的时代,各类高性能材料不断涌现,全氟醚橡胶便是其中一颗闪耀的明珠。它以其卓越的性能和广泛的应用领域,在众多关键行业中发挥着不可或缺的作用,展现出巨大的市场潜力和发展前景。 一、引言 全氟醚橡胶&#…...
Android程序中使用FFmpeg库
目录 前言 一、环境 二、创建APP 三. 添加FFmpeg库文件到app中 1. 复制ffmpeg头文件和so库到app中 2. 修改CMakeLists.txt文件内容. 3. 修改ffmpeglib.cpp 文件内容 4. 修改NativeLib.kt 文件添加方法和加载库 5. 调用 四. 增加解析视频文件信息功能 总结 前言 前面…...
Spring 依赖注入详解:创建 Bean 和注入依赖是一回事吗?
1. 什么是依赖注入(Dependency Injection,DI)? 依赖注入 是 Spring IoC(控制反转)容器的核心功能。它的目标是将对象的依赖(如其他对象或配置)从对象本身中剥离,由容器负…...
【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题
本篇博客给大家带来的是01背包问题之动态规划解法技巧. 🐎文章专栏: 动态规划 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快乐顺便…...
浅说树上差分——点差分
我们前面也学过差分,现在的话我们就把他放到树上来做。因为这是树,所以会有点和边之分,所以树上差分也会分为 点差分 和 边差分 。 引入 树上差分其实和线性差分没有什么区别,只不过是放到了树上的两点,而他们之间的…...
All in大模型!智能座舱语音交互决胜2025
大模型加速上车,AI智能座舱竞争更显白热化。 诚然,在语言大模型为核心的多模态能力加持下,智能语音助理能够理解复杂的语言指令,实现知识问答、文本生成等,以及根据上下文进行逻辑推理,提供更智能、准确的…...
windows git bash 使用zsh 并集成 oh my zsh
参考了 这篇文章 进行配置,记录了自己的踩坑过程,并增加了 zsh-autosuggestions 插件的集成。 主要步骤: 1. git bash 这个就不说了,自己去网上下,windows 使用git时候 命令行基本都有它。 主要也是用它不方便&…...
Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
读书笔记:卓越强迫症强大恐惧症,在亲子家庭、职场关系里尤其是纵向关系模型里,这两种状态很容易无缝衔接。尤其父母对子女、领导对下属,都有望子成龙、强将无弱兵的期望,然而在你的面前,他们才是永远强大的…...
IDEA导入Maven工程不识别pom.xml
0 现象 把阿里 sentinel 项目下载本地后,IDEA 中却没显示 maven 工具栏。 1 右键Maven Projects 点击IDEA右侧边栏的Maven Projects,再点击: 在出现的选择框中选择指定的未被识别的pom.xml即可: 2 Add as maven project 右键p…...
AT8870单通道直流电机驱动芯片
AT8870单通道直流电机驱动芯片 典型应用原理图 描述 AT8870是一款刷式直流电机驱动器,适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制H桥驱动器,该驱动器由四个N-MOS组成,能够以高达3.6A的峰值电流双向控制电机。利用电流…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
