当前位置: 首页 > news >正文

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. 自定义异常

可以创建自己的异常类,以满足特定需求。自定义异常类通常继承 ExceptionRuntimeException

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:用于在内存中写入字节。
  • CharArrayReaderCharArrayWriter:用于在内存中读取和写入字符。

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啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本牛马baby今天又来了&#xff01;哈哈哈哈哈嗝&#x1f436; Java中异常的处理方式有哪些&#xff1f; 在 Java 中&#xff0c;异常的处理方式主要有以下几种&#xff1a; 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 中&#xff0c;跳表&#xff08;Skip List&#xff09; 被用于实现 有序集合&#xff08;Sorted Set&#xff09; 数据结构。以下是对此实现的详细解释&#xff1a; Redis中的有序集合&#xff08;Sorted Set&#xff09; 有序集合&#xff08;Sorted Set&#xff0…...

Linux 系统错误处理简介

Linux 系统错误处理简介 1. errno&#xff1a;错误代码的载体2. strerror()&#xff1a;错误信息的翻译官3. perror()&#xff1a;便捷的错误信息输出4. 系统调用与库函数的区别5. 错误处理的最佳实践 在 C/C 程序开发中&#xff0c;我们经常需要处理各种错误情况 Linux 系统提…...

逐笔成交逐笔委托Level2高频数据下载和分析:20250122

逐笔委托逐笔成交下载 链接: https://pan.baidu.com/s/1WP6eGLip3gAbt7yFKg4XqA?pwd7qtx 提取码: 7qtx Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交和逐笔委托这种每一笔的毫秒级别的数据可以分析出很多有用的点&#xff0c;包括主力意图&#xff0c;虚假动作&…...

第18个项目:微信开发入门:获取access_token的Python源码

源码下载地址:https://download.csdn.net/download/mosquito_lover1/90301829 功能特点: 输入AppID和AppSecret,点击按钮后异步获取access_token 1、自动保存功能: 当用户输入或修改 AppID 和 AppSecret 时自动保存 获取到新的 access_token 时自动保存 所有数据都保存在…...

如何将自己本地项目开源到github上?

环境&#xff1a; LLMB项目 问题描述&#xff1a; 如何将自己本地项目开源到github上&#xff1f; 解决方案&#xff1a; 步骤 1: 准备本地项目 确保项目整洁 确认所有的文件都在合适的位置&#xff0c;并且项目的 README.md 文件已经完善。检查是否有敏感信息&#xff0…...

Windows远程连接Docker服务

问题背景 本地开发了一个SpringBoot项目&#xff0c;想通过Docker部署起来&#xff0c;我本地是Window11系统&#xff0c;由于某些原因不能虚拟化并且未安装Docker-Desktop&#xff0c;所以我在想有没有办法本地不需要虚拟化也不需要安装Docker-Desktop来实现支持Docker命令远…...

在Qt中实现点击一个界面上的按钮弹窗到另一个界面

文章目录 步骤 1&#xff1a;创建新窗口类步骤 2&#xff1a;设计窗口的 UI步骤 3&#xff1a;设计响应函数 以下是一个完整的示例&#xff0c;展示在Qt中如何实现在一个窗口中通过点击按钮弹出一个新窗口。 步骤 1&#xff1a;创建新窗口类 假设你要创建一个名为 WelcomeWidg…...

嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础

嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础 目录 1.NAND FLASH 和NOR FLASH异同 ? 2.CPU,MPU,MCU,SOC,SOPC联系与差别? 3.什么是交叉编译&#xff1f; 4.为什么要交叉编译&#xff1f; 5.描述一下嵌入式基于ROM的运行方式和基于RAM的运行方式有什么区别? 1…...

全氟醚橡胶发展前景:高性能密封材料的璀璨之星

在当今科技飞速发展的时代&#xff0c;各类高性能材料不断涌现&#xff0c;全氟醚橡胶便是其中一颗闪耀的明珠。它以其卓越的性能和广泛的应用领域&#xff0c;在众多关键行业中发挥着不可或缺的作用&#xff0c;展现出巨大的市场潜力和发展前景。 一、引言 全氟醚橡胶&#…...

Android程序中使用FFmpeg库

目录 前言 一、环境 二、创建APP 三. 添加FFmpeg库文件到app中 1. 复制ffmpeg头文件和so库到app中 2. 修改CMakeLists.txt文件内容. 3. 修改ffmpeglib.cpp 文件内容 4. 修改NativeLib.kt 文件添加方法和加载库 5. 调用 四. 增加解析视频文件信息功能 总结 前言 前面…...

Spring 依赖注入详解:创建 Bean 和注入依赖是一回事吗?

1. 什么是依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;&#xff1f; 依赖注入 是 Spring IoC&#xff08;控制反转&#xff09;容器的核心功能。它的目标是将对象的依赖&#xff08;如其他对象或配置&#xff09;从对象本身中剥离&#xff0c;由容器负…...

【动态规划】落花人独立,微雨燕双飞 - 8. 01背包问题

本篇博客给大家带来的是01背包问题之动态规划解法技巧. &#x1f40e;文章专栏: 动态规划 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺便…...

浅说树上差分——点差分

我们前面也学过差分&#xff0c;现在的话我们就把他放到树上来做。因为这是树&#xff0c;所以会有点和边之分&#xff0c;所以树上差分也会分为 点差分 和 边差分 。 引入 树上差分其实和线性差分没有什么区别&#xff0c;只不过是放到了树上的两点&#xff0c;而他们之间的…...

All in大模型!智能座舱语音交互决胜2025

大模型加速上车&#xff0c;AI智能座舱竞争更显白热化。 诚然&#xff0c;在语言大模型为核心的多模态能力加持下&#xff0c;智能语音助理能够理解复杂的语言指令&#xff0c;实现知识问答、文本生成等&#xff0c;以及根据上下文进行逻辑推理&#xff0c;提供更智能、准确的…...

windows git bash 使用zsh 并集成 oh my zsh

参考了 这篇文章 进行配置&#xff0c;记录了自己的踩坑过程&#xff0c;并增加了 zsh-autosuggestions 插件的集成。 主要步骤&#xff1a; 1. git bash 这个就不说了&#xff0c;自己去网上下&#xff0c;windows 使用git时候 命令行基本都有它。 主要也是用它不方便&…...

Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合

读书笔记&#xff1a;卓越强迫症强大恐惧症&#xff0c;在亲子家庭、职场关系里尤其是纵向关系模型里&#xff0c;这两种状态很容易无缝衔接。尤其父母对子女、领导对下属&#xff0c;都有望子成龙、强将无弱兵的期望&#xff0c;然而在你的面前&#xff0c;他们才是永远强大的…...

IDEA导入Maven工程不识别pom.xml

0 现象 把阿里 sentinel 项目下载本地后&#xff0c;IDEA 中却没显示 maven 工具栏。 1 右键Maven Projects 点击IDEA右侧边栏的Maven Projects&#xff0c;再点击&#xff1a; 在出现的选择框中选择指定的未被识别的pom.xml即可&#xff1a; 2 Add as maven project 右键p…...

AT8870单通道直流电机驱动芯片

AT8870单通道直流电机驱动芯片 典型应用原理图 描述 AT8870是一款刷式直流电机驱动器&#xff0c;适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制H桥驱动器&#xff0c;该驱动器由四个N-MOS组成&#xff0c;能够以高达3.6A的峰值电流双向控制电机。利用电流…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

负载均衡器》》LVS、Nginx、HAproxy 区别

虚拟主机 先4&#xff0c;后7...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...