Java高频面试之SE-16

news2025/1/23 11:35:02

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

在这里插入图片描述

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

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

相关文章

HTML中的`<!DOCTYPE html>`是什么意思?

诸神缄默不语-个人CSDN博文目录 在学习HTML时&#xff0c;我们经常会看到HTML文档的开头出现<!DOCTYPE html>&#xff0c;它是HTML文件的第一行。很多初学者可能会疑惑&#xff0c;为什么需要这行代码&#xff1f;它到底有什么作用呢&#xff1f;在这篇文章中&#xff0…

Games104——游戏中地形大气和云的渲染

原文链接 原文链接 这里写目录标题 地形的几何Heightfield高程图网格自适应细分三角形的剖分二叉树T-Junctions四叉树TIN&#xff08;Triangulated Irregular Network&#xff09;不规则三角形网格 GPU Drived Tessellator(Hardware Tessellation)Mesh ShaderNon-HeightField…

Springboot自动配置的原理

先拿redis来举个例子 第一步导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 第二步配置 spring: redis: database:host:127.0.0.1 port…

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

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

记一次虚机上传过慢问题排查

最近线上虚机有个特殊的用户反馈&#xff0c;用户反馈虚机从A服务器下载文件特别慢&#xff0c;于是scp A服务器数据到本地client&#xff0c;发现 只有几十K的流量。 当时第一反应怀疑是虚机负载压力比较大&#xff0c;但是查看虚机IO以及负载都很低。。。。 然后tcpdump抓包发…

web服务器 网站部署的架构

WEB服务器工作原理 Web web是WWW(World Wide Web)的简称&#xff0c;基本原理是&#xff1a;请求(客户端)与响应(服务器端)原理&#xff0c;由遍布在互联网中的Web服务器和安装了Web浏览器的计算机组成 客户端发出请求的方式&#xff1a;地址栏请求、超链接请求、表单请求 …

数据结构——实验七·排序

嗨~~欢迎来到Tubishu的博客&#x1f338;如果你也是一名在校大学生&#xff0c;正在寻找各种编程资源&#xff0c;那么你就来对地方啦&#x1f31f; Tubishu是一名计算机本科生&#xff0c;会不定期整理和分享学习中的优质资源&#xff0c;希望能为你的编程之路添砖加瓦⭐&…

Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法

最近&#xff0c;Win11 24H2预览版和Win10 LTSC 2025功能更新偶尔会触发RunDLL错误弹窗 具体表现为 //英文提示 Error in C:\WINDOWS\system32\PcaSvc.dll Missing entry: PcaWallpaperAppDetect//中文提示 C:\WINDOWS\system32\PcaSvc.dll出错 丢失条目:PcaWallpaperAppDe…

计算机组成原理——数据表示(二)

当生活的压力和困惑缠绕在身边&#xff0c;我们往往需要振奋精神&#xff0c;勇往直前。无论在何种困境中&#xff0c;我们都要保持积极的态度和坚定的信念。将悲观的情绪抛之脑后&#xff0c;展现出坚强的意志力和无尽的活力。振奋精神意味着我们要战胜自己内心的负面情绪&…

人源化抗体的改造方式及其优势【卡梅德生物】

随着生物制药行业的迅速发展&#xff0c;抗体药物已经成为治疗多种疾病&#xff08;尤其是癌症、免疫性疾病等&#xff09;的重要手段。抗体人源化改造技术作为抗体药物研发的关键技术之一&#xff0c;在提高药物疗效和降低免疫原性方面发挥了至关重要的作用。 1. 人源化抗体的…

【Linux】深刻理解动静态库

1.什么是库 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个⼈的代码都从零开始&#xff0c;因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式&#xff0c;可以被操作系统载…

【java数据结构】其他非基于比较排序

【java数据结构】其他非基于比较排序 一、计数排序二、基数排序三、桶排序 博客最后附有整篇博客的全部代码&#xff01;&#xff01;&#xff01; 一、计数排序 场景&#xff1a;集中在某个范围内的一组数据 思路&#xff1a; 找到这组序列的最大值和最小值&#xff0c;通过…

博客之星2024年度总评选——我的年度创作回顾与总结

2024年&#xff0c;是我在CSDN博客上持续耕耘、不断成长的一年。在此&#xff0c;与大家分享一下我的年度创作回顾与总结。 一、创作成长与突破 在人工智能领域&#xff0c;技术迭代迅速&#xff0c;知识更新频繁。为了保持自己的竞争力&#xff0c;在今年&#xff0c;我始终…

ChromeOS 132 版本更新

ChromeOS 132 版本更新 1. 企业定制化 Chrome Web Store 管理员现在可以使用新设置定制 Chrome Web Store 以适应他们管理的用户&#xff0c;包括以下功能&#xff1a; 添加公司标志添加首页横幅和自定义公告策划扩展集合实施基于类别的控制 这些设置可以通过管理员控制台进…

Golang Gin系列-5:数据模型和数据库

在这篇Gin教程的博客中&#xff0c;我们将探索如何将模型和数据库与Gin框架无缝集成&#xff0c;使你能够构建健壮且可扩展的web应用程序。通过利用流行的库并遵循最佳实践&#xff0c;你将学习如何定义模型、建立数据库连接、执行CRUD操作以及确保基于gin的项目中的数据完整性…

计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

设计模式的艺术-代理模式

结构性模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解代理模式 代理模式&#xff08;Proxy Pattern&#xff09;&#xff1a;给某一个对象提供一个代理&#xff0c;并由代理对象控制对原对象的引用。代理模式是一种对象结构型模式。 代理模式类型较多…

Spring Boot整合Thymeleaf、JDBC Template与MyBatis配置详解

本文将详细介绍如何在Spring Boot项目中整合Thymeleaf模板引擎、JDBC Template和MyBatis&#xff0c;涵盖YAML配置、依赖版本匹配、项目结构设计及代码示例。 一、版本兼容性说明 Spring Boot版本与Java版本对应关系 Spring Boot 2.x&#xff1a;支持Java 8、11&#xff08;推…

【博客之星】2024年度创作成长总结 - 面朝大海 ,春暖花开!

没关系的&#xff0c;大家都会做错选择&#xff0c;会 莫名其妙掉眼泪&#xff0c;走在路上会突然崩溃&#xff0c; 但这并不影响我们去看看晚霞&#xff0c; 再次爱上这个世界。 面朝大海 &#xff0c;春暖花开! about meReviewLife about me 现在我是一名24级计算机类的…

StyleMaster: Stylize Your Video with Artistic Generation and Translation 论文解读

目录 一、概述 二、相关工作 1、图像风格化 2、视频风格化 三、StyleMaster 1、创建对比数据集 2、提取全局描述子 3、局部描述和全局描述结合 4、时间和风格质量的运动适配器 5、Gray Tile ControlNet 四、实验 一、概述 Our StyleMaster demonstrates superior vi…