Java后端学习系列(3):Java异常处理与常用类库

Java学习开发入门基础教程系列 ava是一种跨平台的语言,一次编写,到处运行,在世界编程语言排行榜中稳居第二名(第一名是C语言)。 Java用途广泛,可以用来开发传统的客户端软件和网站后台,也可以开发如火如荼 Android 应用和云计算平台。 一. Java概述 1.Java语言概述 2.Java虚拟机以及跨平台原理 3.Java的主要就业方向 4.Java的不同版本 5.Java开发环境搭建 6.第一个Jav... 阅读详情

Java后端学习系列(3):Java异常处理与常用类库

前言

经过前面两期对Java后端基础以及面向对象相关重要知识的学习,我们已经打下了一定的基础。本期我们将聚焦于Java异常处理机制以及常用类库的探索,这两部分内容在日常的Java开发中是极为常用且关键的,掌握好它们能让我们更高效、稳健地进行代码编写与项目开发。本系列一共15期,会持续为大家梳理Java后端各方面的核心知识。

一、Java异常体系结构剖析

1.1 异常的分类

在Java中,异常分为两大类,即Error(错误)和Exception(异常)。

  • Error:一般是指Java虚拟机无法解决的严重问题,比如OutOfMemoryError(内存溢出错误)、StackOverflowError(栈溢出错误)等,这类问题通常是由于系统资源耗尽或者程序本身存在严重的逻辑错误等导致的,程序一般无法恢复执行,只能终止。
  • Exception:又可以细分为Checked Exception(受检异常)和Unchecked Exception(非受检异常,也叫运行时异常)。
    • Checked Exception:像IOException(输入输出异常)、SQLException(数据库操作异常)等,这类异常在编译时就会被强制要求处理,要么通过try-catch语句捕获,要么在方法声明处使用throws关键字抛出。
    • Unchecked Exception:例如NullPointerException(空指针异常)、ArrayIndexOutOfBoundsException(数组越界异常)等,这类异常不需要在编译时显式处理,但是在运行时如果出现会导致程序中断,所以我们在编写代码时也要尽量避免出现这类异常。

1.2 异常类的继承关系

所有的异常类都继承自Throwable类,Error和Exception作为它的直接子类,然后各自又有众多的具体异常子类,形成了一个层次分明的异常体系结构,方便我们在不同场景下准确地抛出和处理相应的异常情况。

二、异常处理机制与实践

2.1 try-catch语句块

try-catch语句是捕获和处理异常的常用方式,基本语法如下:

try {
    // 可能会抛出异常的代码块
    FileReader fileReader = new FileReader("test.txt");
} catch (FileNotFoundException e) {
    // 捕获到对应异常后的处理逻辑,比如打印异常信息等
    System.out.println("文件未找到异常:" + e.getMessage());
}

在try块中放置可能会抛出异常的代码,当异常发生时,程序会立即跳转到对应的catch块中执行相应的处理逻辑,这样可以避免程序因为异常而直接崩溃,能够继续往下执行其他部分的代码。

2.2 finally块

finally块通常用于放置无论是否发生异常都需要执行的代码,比如关闭资源(文件流、数据库连接等)。示例如下:

FileReader fileReader = null;
try {
    fileReader = new FileReader("test.txt");
} catch (FileNotFoundException e) {
    System.out.println("文件未找到异常:" + e.getMessage());
} finally {
    if (fileReader!= null) {
        try {
            fileReader.close();
        } catch (IOException e) {
            System.out.println("关闭文件流时出现异常:" + e.getMessage());
        }
    }
}

不管在try块中是否出现异常,finally块中的代码都会被执行,确保资源能够被正确释放,避免资源泄露等问题。

2.3 throws关键字

如果一个方法内部可能会抛出异常,但是不想在当前方法内处理,就可以使用throws关键字将异常抛给调用该方法的上层代码去处理,例如:

public void readFile() throws FileNotFoundException {
    FileReader fileReader = new FileReader("test.txt");
}

这样,调用readFile方法的地方就需要对FileNotFoundException进行处理,要么通过try-catch捕获,要么继续使用throws往上抛。

三、常用的Java类库介绍

3.1 java.util包下的常用工具类

  • ArrayList:动态数组,相较于普通数组,它可以方便地进行元素的添加、删除和修改等操作。示例如下:
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.remove(0);
  • HashMap:用于存储键值对数据,能根据键快速查找对应的值,在很多场景中用于数据的映射和缓存等。示例:
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "One");
map.put(2, "Two");
String value = map.get(1);
  • Collections:提供了一系列对集合进行操作的静态方法,比如对集合进行排序、反转等操作。例如:
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(3);
numbers.add(8);
Collections.sort(numbers);

3.2 日期时间处理相关类

  • Date类:是Java早期用于处理日期和时间的类,不过现在已经不推荐直接使用,它存在一些设计上的不足,比如可变性等问题。例如:
Date date = new Date();
System.out.println(date);
  • Calendar类:是一个抽象类,用于对日期和时间进行更灵活的操作,比如获取年、月、日等信息,以及进行日期的加减运算等。示例:
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
calendar.add(Calendar.DAY_OF_MONTH, 1);
  • LocalDateTime类(Java 8引入):它提供了更加方便、易用且线程安全的日期时间处理方式,能精确到纳秒级别,支持很多便捷的操作方法。例如:
LocalDateTime now = LocalDateTime.now();
LocalDateTime future = now.plusHours(2);

四、下一步学习建议

  1. 异常处理实践:在自己编写的代码中,尤其是涉及到文件操作、网络通信等容易出现异常的地方,刻意地去运用try-catch、finally以及throws等异常处理机制,并且思考不同场景下如何更合理地处理异常,避免过度捕获或者遗漏异常情况。
  2. 类库深入学习:针对介绍的常用类库,深入阅读官方文档,了解更多的方法和用法细节,然后自己动手编写一些示例代码,尝试用不同的类和方法去解决实际的小问题,比如利用集合类实现一个简单的任务管理系统等。
  3. 代码优化:回顾之前自己写的代码,看看是否有可以通过使用合适的类库或者优化异常处理来提升代码质量和健壮性的地方,进行相应的代码重构。

下期预告

《Java后端学习系列(4):Java多线程与并发编程基础》

  • 线程的基本概念与创建方式
  • 线程的生命周期与状态转换
  • 线程同步机制(如synchronized关键字等)
  • 并发容器的基本使用

希望大家通过不断学习和实践,逐步掌握Java后端的这些核心知识,在开发之路上越走越顺。如果在学习过程中有任何疑问或者心得,欢迎在评论区留言分享,我们下期再见。

安利—java后端学习全流程集锦 首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 大家可以加老师vx领取最新资料哦   其中J2SE是关键,如果学好了java se 部分,基础扎实了,后面进阶学习也比较轻松!   补充说明一下:我觉得学习java比较合适的方法是先把所有的知识点过一遍,然后把所有的知识点串起来,边做开发边补充,就像写文章一样,先写好框架,然后再去润色填充。因为前期在学习... 阅读详情

相关推荐

Java后端工程师学习路线——大学版

作为一名Java后端工程师,需要具备一定的计算机基础知识、Java语言基础和相关技术栈的知识,包括数据库、Web开发、框架等。在这篇博客中,我将从大一开始,讲解如何规划学习路线,以成为一名Java后端工程师。

2202_75628239的博客 929

java 异常处理工具类_1-Java常用工具类-异常

除了自定义类,java中还为我们提供了一系列的工具类。我们会为大家介绍6种最常用的工具类。-如何进行应用异常处理程序中的问题?(系统介绍)-如何通过包装器类实现基本数据类型的对象化处理-String、StringBuilder是如何进行字符串信息操作的-常用集合框架及实现类使用-如何使用Java输入输出流进行文件读写-如何使用多线程实现数据并发通信(难度从上向下依次递增)异常课程介绍什...

weixin_29035405的博客 813

Java常见工具类及异常处理

Java常用工具类及异常,异常的原理 try,catch,finally,throws,throw Arrays类 Random类 System和Runtime类

Java全局异常处理+自定义异常

为了规范后台开发接口的标准,以及便于前台统一处理接口返回数据,定义一个通用的返回类是必要的。/*** @Description: 通用返回类*/@Data可分类自定义错误编码,这样可以统一管理(尽量不要跟请求返回的状态码保持一直,比如500,400,404等/*** @Description: 错误码*/PARAM_ERROR(40000,"请求参数错误",""),NULL_ERROR(40001,"数据为空",""),

weixin_51389291的博客 3343

后端异常统一处理解决方案

详情请查看博客链接:https://blog.youkuaiyun.com/byteArr/article/details/87705593

pgAdmin4备份恢复实战:从安装到避坑指南

本文提供了一份详尽的pgAdmin4备份恢复实战指南,涵盖从安装配置到执行备份恢复的全流程。针对Windows环境下的浏览器兼容性、二进制路径配置等常见问题,给出了具体解决方案。重点强调了使用pgAdmin4进行备份恢复的可靠性,特别是在处理包含PostGIS等扩展的数据库时,能有效避免数据类型和权限错误,确保数据迁移的完整性与安全性。

weixin_29266007的博客 438

Java常用工具类--异常

什么是异常:本质上是程序上的错误,包括编译时错误和运行间错误 异常的分类: Throwable:java中异常的根类 Error:程序无法处理的错误,在程序的控制和处理能力之外,一般是java虚拟机出现了问题 Exception:程序本身可以处理的异常,异常处理通常指针对这一类型异常 非检查异常:编译器不要求强制处理的异常 检查异常:编译器要求必须处理的异常 如何处理异常...

Java小白的自学之路 720

数电实训:万年历

万年历

Lmyccq的博客 1万+

java异常处理工具类(ExceptionUtils)

是一个自定义的 Java 工具类,旨在简化异常处理的常见操作。它提供了异常信息获取、日志记录、异常转换和包装等功能。通过,开发者可以减少异常处理代码的冗余,规范异常的记录和输出,提升代码的可读性和维护性。ExceptionUtils是一个Java异常处理工具类,提供了一些常见的异常处理方法。:获取异常堆栈信息,返回一个字符串。:获取异常的原因,返回一个Throwable对象。:获取异常的根本原因,返回一个Throwable对象。:将异常堆栈信息打印到标准错误流。:获取异常的详细信息,返回一个字符串。

Flying_Fish_roe的博客 2250

实战指南:轻松破解DataDome滑块验证码的关键步骤

本文详细介绍了破解DataDome滑块验证码的关键步骤,包括理解其工作原理、准备工作、参数获取与配置、完整破解流程及API调用。通过使用Capsolver服务和模拟真实用户行为,帮助开发者有效绕过这一反机器人机制,同时强调了法律与道德考量。

weixin_30415113的博客 478

用workbuddy自定义Skill:手把手搭建AI炒股分析助手

AI Agent正成为个人投资研究的重要工具,而Skill作为行为规范,能让AI输出保持稳定与专业。在AI Agent应用中,很多人分不清Skill与Agent的区别:Agent负责目标拆解与执行,Skill则固化分析流程与输出模板。借助本地工作台workbuddy,用户可自定义Skill,实现从市场环境检查到财务排雷的五段式分析。通过调低温度参数、设定数据验证规则,该方案能有效避免大模型凭空编造数据,帮助个人投资者快速完成基本面体检、资金面观察与风险清单生成。本文基于一套可直接套用的配置与一个月实测,展示

weixin_29038537的博客 502

java 异常处理工具类_3.1 异常与异常处理(常用工具类)

1、异常简介异常简介异常:阻止当前方法或作用域的问题异常处理的作用Java异常体系结构简介Throwable:Error:虚拟机错误(VirtualMachineError)、线程锁死(ThreadDeath)--奔溃Exception:编码、环境、用户操作输入出现问题1、RuntimeException((非检查异常):空指针异常(NullPointerException)String str=...

weixin_31211703的博客 497

粒子滤波在基于误差状态量的INS/GNSS组合导航中的使用技巧-On Particle Filter based Error-State INS/GNSS Intergrated Navigation

本文面向以15维惯导(INS)误差为状态量,3维位置误差为量测量的INS/GNSS组合导航系统,​在西工大严恭敏老师的开源工具箱中PF相关库函数基础上实现基于粒子滤波(PF)的惯导误差状态量的递推估计,设计了粒子重置环节并强调了其在本特定场景下的重要性。

I33D33I的博客 1742

一文整理总结常见Java后端面试题系列——Java基础篇(2022最新版)

为什么会出现自动拆装箱Java 语言是一个面向对象的语言,但是 Java 中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。使得基本数据类型也具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

程序猿周周的博客 2万+

如何用Arduino和HX711压力传感器制作一个简易电子秤(含OLED显示)

本文详细介绍了如何使用Arduino、HX711压力传感器和OLED显示屏制作一个简易电子秤。从硬件连接到软件编程,提供了分步教程,包括核心元件功能解析、接线方法、库安装、模块测试以及关键的校准流程。项目实践性强,适合创客和DIY爱好者学习嵌入式系统与传感器应用。

tea88的博客 535

Harness设计——Anthropic实战:规划器、生成器、评估器三角色协作详解

本文探讨了如何通过多智能体架构突破AI编码的瓶颈问题。文章首先分析了当前AI编码面临的两大核心挑战:上下文窗口限制导致的连贯性丧失,以及自我评估机制缺失引发的质量判断偏差。针对这些问题,作者提出了基于生成对抗网络(GAN)灵感的解决方案,设计了三智能体系统:规划器负责需求分析,生成器执行编码任务,评估器进行质量审查。 实验表明,在前端设计任务中,通过制定可量化的评分标准(设计质量、原创性、工艺、功能性)并建立生成-评估反馈循环,能显著提升输出质量。这种架构随后被扩展到全栈开发领域,采用类似敏捷开发的&quo

oe1019的专栏 865

自学Java之常用类库与异常处理

Java常用类库与异常处理,下一阶段项目实践与巩固

2301_77179862的博客 344

避坑指南:新手爬百度图片3个致命错,改完批量保存本地(亲测有效)

新手爬百度图片的核心是“绕开静态HTML,抓准API接口+处理反爬+提取原图”,改完本文提到的3个核心错,就能稳定批量保存高清图片。这套思路可复用在其他图片网站(如必应图片、360图片),只需修改API接口和参数即可。如果想进一步优化,可添加代理IP池、多线程下载(新手不建议,容易触发反爬)、图片去重等功能!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1586

Java 后端开发技术学习总结:实用代码示例与项目实操经验大公开

通过对 Java 后端开发技术从基础语法到框架应用,再到数据库交互和项目实战的深入学习,我们逐步构建起坚实的知识体系。然而,技术的发展日新月异,Java 生态也在不断演进。未来,我们需要持续关注新的框架版本、性能优化技巧以及云计算、微服务等新兴领域与 Java 后端的融合。希望这篇学习总结能成为各位读者在 Java 后端之旅中的得力伙伴,让我们一起在代码的世界里不断探索,创造出更强大、更高效的后端应用。

2301_80350265学无止尽5的博客 6685

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【Java后端】——JAVA后端学习路线

hello小伙伴们,博主学后端也有一段时间了,感觉后端的知识确实比较多,对于逻辑思维的要求和基础要求也比较高。接下来咱们就一起捋一捋后端的学习路线,然后咱们就开始按顺序对每一块知识进行复习,总结和串联。

weixin_73582152的博客 3614

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java后端学习系列(5):Java网络编程基础

TCP/IP协议是一组用于实现网络通信的协议族,它包含了多个层次的协议,其中最核心的是传输控制协议(TCP)和网际协议(IP)。IP协议:主要负责在网络中对数据包进行寻址和路由选择,确保数据能够从源主机发送到目标主机,它是一种无连接的、不可靠的协议,只关注数据包的转发。TCP协议:是一种面向连接的、可靠的传输协议,它在IP协议的基础上,为应用程序提供了可靠的字节流传输服务,通过建立连接、确认机制、重传机制等确保数据准确无误地到达对方。

Azperk的博客 1000

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

从Java后端到Python大模型:我的学习转型与规划

摘要: 本文分享了一名Java后端开发者转型学习Python大模型的经历与规划。作者通过四个月系统学习掌握了Java核心技术、中间件和项目实战经验,随后意识到大模型正在重塑开发模式,决定转向Python大模型领域。文章提出结合Java基础优势快速掌握Python语法,将后端经验迁移至大模型学习,并建议分阶段从数据科学基础到核心技术再到实战融合的学习路径。最后强调在AI时代保持技术敏锐度,通过"Java+大模型"的跨语言融合打造差异化竞争力,实现从基础开发向智能开发的转型。(149字)

2401_86509639的博客 1514

Java后端学习,推荐书籍和学习路线

最近在学习Java和全栈开发,推荐一些有用的书籍 书架主要针对Java后端和全栈开发用的 书籍介绍 《Spring Boot 2.0企业级应用开发实战》 本书深入浅岀地讲解了 Spring与 Spring Boot所涉及的重要知识点。更有特色的是,针对一个博客系统的开发过程,来描述所涉及的相关技术细节。读者不仅能全面学到软件开发技能,还能学到项目实战经验,在书中充分...

smartCodeDrean的博客 8593

我的Java后端学习路线(2025最新版)

在当今互联网技术生态中,Java后端开发依然是最主流、最稳定、岗位最多的技术方向之一。无论是电商、金融、社交还是企业服务系统,Java都占据着举足轻重的地位。| 时间 | 目标 || 第1~2月 | 掌握Java基础 + MySQL + JavaWeb || 第3~4月 | 精通Spring Boot + MyBatis + Redis || 第5月 | 微服务 + 项目实战 || 第6月 | 刷算法 + 完善简历 + 投实习 |🌟 **记住:编程不是学出来的,是写出来的!

lsp_kudang的博客 6369

如何学习Java后端开发

Java基础 → 数据库 → Web基础 → Spring → Spring Boot → 微服务 → 分布式 → 项目实战 → 运维部署关键建议多动手写代码,避免“只看不练”。遇到问题善用 Google/Stack Overflow/GitHub Issues。定期复盘,整理笔记(推荐使用 Notion 或语雀)。通过系统学习和持续实践,你可以逐步成长为一名合格的 Java 后端工程师!🚀。

2303_82176667的博客 2307

Java 学习系列(12):Java 异常处理详解

有时我们需要定义自己的异常类来描述特定的错误情况,通常通过继承Exception类来实现。try {throw new MyCustomException("这是自定义异常");System.out.println("捕获自定义异常: " + e.getMessage());异常是程序运行中的一种错误或异常情况,Java 提供了try-catch语句来处理异常,确保程序的健壮性。Java 中的异常分为检查型异常和非检查型异常,检查型异常必须显式处理。语句是处理异常的基本结构,finally。

Azperk的博客 665
上一篇: Java后端学习系列(2):深入面向对象与设计原则
下一篇: Java后端学习系列(4):Java多线程与并发编程基础
DoYangTan
博客等级 码龄5年 1946粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值