Java 异常

张开发
2026/4/9 20:31:16 15 分钟阅读

分享文章

Java 异常
作为一个刚接触 Java 不久的初学者最开始看到 “异常” 这两个字的时候我完全是懵的 —— 总觉得异常就是程序出 bug 了写代码的时候只要把 try-catch 加上让程序不报错就行根本没搞懂背后到底是什么逻辑。直到跟着教程系统学完这一章才慢慢明白异常根本不是简单的 “报错”而是 Java 给我们设计的一套让程序更健壮的 “安全机制”。最开始学的时候我先搞懂了最基础的概念异常就是程序运行过程中出现的意外情况比如我们写代码的时候不小心让数组越界了、用了空对象、除数写了 0这些情况都会让程序突然中断而异常处理就是帮我们在这些意外发生的时候给程序一个 “补救” 的机会而不是直接崩溃。Java 里的异常有一套完整的体系最顶层是 Throwable下面分成了 Error 和 Exception 两大类。一开始我总把这两个搞混后来才明白Error 是那种我们根本管不了的严重问题比如虚拟机内存溢出这种错误程序根本没法处理我们能做的就是尽量避免而 Exception 才是我们日常开发要打交道的它又分成了运行时异常和受检异常运行时异常就是我们写代码不注意犯的错比如空指针、数组越界编译器不会强制我们处理受检异常则是编译器会盯着我们的比如读写文件、连接数据库的时候可能出的问题必须要么捕获要么声明不然代码都编译不通过。接下来学异常处理的时候我才真正搞懂了那几个关键字的用法。最开始只会写 try-catch总觉得把可能出错的代码包起来就万事大吉了后来才知道这里面有好多讲究。throw 是用来主动抛出异常的比如我们写方法的时候要校验用户输入的参数如果参数不对就可以用 throw 主动抛出一个异常告诉调用者 “你传的参数有问题”throws 则是在方法上声明告诉调用者 “这个方法可能会抛出这些异常你要自己处理”。而 try-catch-finally 才是最常用的结构try 里放可能出错的代码catch 用来捕获异常并处理finally 则是不管有没有出错都会执行的部分一般用来关流、关连接这种必须做的操作。最开始我总在 finally 里写 return后来才知道这是个大坑会把原本的异常给吞掉排查问题的时候根本找不到原因。学完基础处理之后我又接触了自定义异常这部分真的让我对异常有了新的理解。最开始我觉得 Java 自带的异常就够用了为什么还要自己写后来才明白业务开发里很多错误是 Java 自带异常没法精准描述的比如 “用户名不存在”“密码错误”“订单状态异常”这些业务场景用自带的 Exception 太笼统了根本没法区分到底是什么问题。所以我们可以自己写异常类继承 Exception 或者 RuntimeException给它加上自己的提示信息这样在业务代码里抛出的时候就能精准地告诉调用者到底出了什么业务问题排查起来也方便很多。现在回头看异常处理真的是 Java 入门的一个关键点它不是用来 “掩盖 bug” 的而是帮我们写出更健壮、更易维护的代码。作为初学者最开始不要急着写复杂的异常处理先把基础的概念、语法搞懂再慢慢在实际写代码的时候去实践慢慢就能明白什么时候该抛异常、什么时候该捕获、什么时候该自定义异常了。这部分知识虽然看起来简单但却是写出高质量 Java 代码的基础一定要好好掌握。

更多文章