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

Java 核心进阶:从异常处理到常用工具类

一、异常处理:程序的“安全气囊”
程序运行过程中难免会遇到意外,Java 提供了一套完善的异常处理机制来应对这些突发状况。

  1. 异常的简介与分类
    异常(Exception)本质上是程序运行时发生的非正常事件。Java 将异常主要分为两大类:
    编译时异常(Checked Exception):如  IOException ,编译器强制要求处理,否则无法通过编译。
    运行时异常(Runtime Exception):如  NullPointerException ,通常由逻辑错误引起,编译器不强制检查。

  2. 捕获异常:try-catch-finally
    这是最基础的处理方式。我们将可能出错的代码放在  try  块中,一旦出错,程序会跳转到对应的  catch  块进行处理。无论是否发生异常, finally  块中的代码(通常用于释放资源)都会执行。
    try {
    // 尝试执行的代码
    int result = 10 / 0;
    } catch (ArithmeticException e) {
    // 捕获并处理除零异常
    System.out.println("除数不能为0");
    } finally {
    // 无论如何都会执行
    System.out.println("执行结束");
    }

  3. 抛出异常:throws 和 throw
    如果当前方法不知道如何处理异常,可以选择将其“甩锅”给调用者。

throw:用在方法体内,手动抛出一个具体的异常对象(例如  throw new RuntimeException("参数错误") )。
throws:用在方法签名上,声明该方法可能会抛出的异常类型,提醒调用者注意。

  1. 自定义异常
    当 JDK 提供的异常无法满足业务需求时(比如“余额不足异常”),我们可以继承  Exception  或  RuntimeException  来定义自己的异常类,使错误提示更具业务含义。

二、常用 API 工具箱

Java 提供了丰富的类库

  1. Math 数学类
     Math  类包含了一系列用于基本数字运算的方法,如绝对值  abs() 、最大值  max() 、随机数  random()  等。它的方法是静态的,直接通过类名调用即可,非常便捷。

  2. 基本数据类型包装类
    Java 是面向对象的语言,但基本数据类型(int, double 等)不是对象。为了方便操作,Java 为每个基本类型提供了对应的包装类(如  Integer ,  Double )。
    自动装箱/拆箱:现代 Java 允许我们在基本类型和包装类之间直接赋值,编译器会自动完成转换。
    实用功能:包装类还提供了字符串转换( parseInt )、进制转换等实用方法。

三、时间与日期:从 Date 到 Calendar
时间处理一直是编程中的痛点,Java 在这方面经历了多次迭代。

  1. Date 类
    这是最早期的时间类,虽然很多方法已过时(Deprecated),但获取当前时间戳依然简单: new Date() 。需要注意的是,它的年份计算通常是从 1900 年开始的,月份是从 0 开始的,使用时容易踩坑。

  2. Calendar 类
    为了解决  Date  的缺陷, Calendar  应运而生。它是一个抽象类,提供了更强大的日历字段操作能力。
    获取实例: Calendar.getInstance() 
    修改时间:可以使用  add()  或  set()  方法灵活地对年、月、日进行加减操作,非常适合处理“下个月的第一天”这种复杂逻辑。

四、时间的格式化与解析

计算机存储的时间通常是毫秒数(Long 类型),而人类习惯看 "yyyy-MM-dd" 格式的字符串。这就需要一个翻译官—— SimpleDateFormat 。
格式化(Format):将Date对象转换为字符串。

解析(Parse):将符合特定格式的字符串转换回Date对象。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(new Date()); // 格式化
Date date = sdf.parse("2023-10-01 12:00:00"); // 解析

五、实战演练:计算时间差

计算两个时间点之间相差的天数。

思路:
将两个时间都转换为毫秒值(使用  getTime() )。
计算毫秒差值的绝对值。
将毫秒差值除以一天的毫秒数(1000 \times 60 \times 60 \times 24)。
这个逻辑不仅适用于天数,稍作修改也能计算小时或分钟差,是日常开发中非常高频的需求。
1c7d9ee3b1e8cfaa58561ad61736ca5d

http://www.rkmt.cn/news/1424011.html

相关文章:

  • GitHub开源项目日报 · 2026年5月27日 · AI技能框架爆发,工具链生态成焦点
  • Claude画像标签体系崩塌前夜:3大信号预示模型老化,附72小时内紧急修复SOP(含Python自动化诊断脚本)
  • 3步解锁鸣潮自动化神器:告别重复刷本的终极方案
  • Spring Boot+Vue智慧校园系统源码包:含数据库脚本、架构图、部署文档与28张功能截图
  • WaveTools深度解析:3分钟彻底解决鸣潮120帧解锁失效问题
  • DIY热成像微距适配器:低成本实现PCB故障精准定位
  • AI写论文超实用!4款AI论文写作工具,解决写论文的烦恼!
  • 老Acer笔记本装Ubuntu 20.04,WiFi驱动折腾记(附Acer-wmi禁用与NetworkManager修复)
  • 大厂UR组锁岗内幕:为什么秋招第一周投递的回复率是后期的十倍?「蒸汽求职分享」
  • Lindy智能招聘模块响应延迟超8秒?性能压测报告曝光:92%企业忽略的3层缓存穿透陷阱
  • CVE-2026-5426深度解析:KnowledgeDeliver硬编码密钥零日漏洞与Godzilla+Cobalt Strike完整攻击链实战还原
  • 数字信任重构:AI、区块链与未来媒体的信任三角解析
  • 小米初代扫地机器人STM32F103+FreeRTOS完整可运行工程(含驱动、协议、任务调度)
  • 从零构建LoFi无线电:Arduino与AM/FM收音机DIY实战指南
  • 大学生怎么进 AI 智能体这个行业?我问了几个已经入行的人
  • 2026年矿用开关柜厂家推荐排行榜:乐清、贵阳、新疆、甘肃、温州等产地防爆配电柜/馈电柜/起动箱/矿用一般型开关柜实力品牌解析 - 品牌企业推荐师(官方)
  • 带GUI的人脸识别小工具:Python+TensorFlow实现检测、对齐、特征提取与身份匹配全流程
  • 基于Visuino与Arduino的温湿度监测系统:DHT11传感器与GC9A01显示屏实战
  • 请做自己的登宝
  • 瑞吉外卖系统Java实训资源包:Spring Boot源码+MySQL脚本+E-R图+实训报告
  • 【Lindy票务自动化落地指南】:20年票务系统专家亲授,3步实现零错误出票与实时库存同步
  • 2026音频转文字工具推荐:4种免费方法手把手教你一看就会
  • 打印机租赁的“选择逻辑”:大企业看什么,小企业看什么
  • 中国电信天翼云TeleDB数据库通过国家安全可靠测评发布
  • 2026录音转文字保姆级教程:免费工具推荐,手把手教你一看就会
  • 谁在领跑AI搜索优化新赛道?谁是GEO行业领头羊?2026专业GEO公司深度解析推荐+业务介绍+FAQ - 互联网科技品牌测评
  • H3CSE 高性能园区网:SNMP 网络管理协议详解
  • STK 12.2 死活连不上 MATLAB R2020b?别慌,一个注册表项就能救活你的MATLAB Connector
  • B2B 跟 B2C 的联盟营销有何根本区别?以及分别如何真正推动增长?
  • 把云端或本地 Agent 接进飞书