Java異常處理3個(gè)避坑神操作總結(jié)(告別崩潰式報(bào)錯(cuò))
做 Java 開發(fā)誰沒踩過異常的坑?比如空指針直接讓程序 “原地去世”,try-catch 裹成 “千層餅”,報(bào)錯(cuò)信息含糊到 debug 半小時(shí)找不到問題。今天分享 3 個(gè)最常用的異常處理技巧,代碼簡潔還實(shí)用,新手也能輕松拿捏~
1. 空指針防護(hù):別再寫一堆 if 判空!
日常開發(fā)中,空指針是最常見的異常。推薦用Objects.requireNonNullElse(Java 9+)或Optional類,一行搞定空值處理:
import java.util.Objects;
import java.util.Optional;
public class ExceptionDemo {
public static void main(String[] args) {
String userName = null; // 模擬可能為空的參數(shù)
Integer age = null;
// 技巧1:Objects工具類(直接指定默認(rèn)值)
String safeName = Objects.requireNonNullElse(userName, "匿名用戶");
System.out.println("用戶名:" + safeName); // 輸出:匿名用戶
// 技巧2:Optional類(更靈活的空值處理)
Integer safeAge = Optional.ofNullable(age)
.orElse(18); // 為空則返回默認(rèn)值18
System.out.println("年齡:" + safeAge); // 輸出:18
// 進(jìn)階:為空時(shí)拋?zhàn)远x異常
Optional.ofNullable(userName)
.orElseThrow(() -> new IllegalArgumentException("用戶名不能為空!"));
}
}2. 多異常處理:別寫 N 個(gè) catch 塊!
多個(gè)異常只需統(tǒng)一處理時(shí),用 “|” 合并異常類型,代碼瞬間清爽:
// 技巧3:合并異常處理(避免重復(fù)代碼)
public static void handleMultiException(String str) {
try {
Integer num = Integer.parseInt(str); // 可能拋NumberFormatException
System.out.println("轉(zhuǎn)換結(jié)果:" + num);
} catch (NumberFormatException | NullPointerException e) {
// 一個(gè)catch處理兩種異常
System.out.println("錯(cuò)誤:輸入?yún)?shù)無效!原因:" + e.getMessage());
}
}
// 調(diào)用測(cè)試
public static void main(String[] args) {
handleMultiException("abc"); // 拋NumberFormatException
handleMultiException(null); // 拋NullPointerException
}關(guān)鍵注意事項(xiàng)
別用
e.printStackTrace()!建議用日志框架(如 SLF4J)打印,方便定位問題;自定義異常時(shí),要包含詳細(xì)的錯(cuò)誤信息,別只拋 “發(fā)生異常” 這種無用提示;
不要濫用 try-catch,比如不需要處理的運(yùn)行時(shí)異常(如 IndexOutOfBoundsException),不如讓程序快速失敗,便于排查問題。
額外神操作:統(tǒng)一異常處理 + 錯(cuò)誤碼
使用 @ControllerAdvice + @ExceptionHandler 統(tǒng)一返回結(jié)構(gòu)體,避免 controller 層到處 try-catch。
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(BizException.class)
public Result<?> handleBiz(BizException e) {
return Result.error(e.getCode(), e.getMessage());
}
}總結(jié)
到此這篇關(guān)于Java異常處理3個(gè)避坑神操作總結(jié)的文章就介紹到這了,更多相關(guān)Java異常避坑神操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springcloud gateway網(wǎng)關(guān)服務(wù)啟動(dòng)報(bào)錯(cuò)的解決
這篇文章主要介紹了springcloud gateway網(wǎng)關(guān)服務(wù)啟動(dòng)報(bào)錯(cuò)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java監(jiān)聽器三種實(shí)現(xiàn)方法代碼解析
這篇文章主要介紹了Java監(jiān)聽器三種實(shí)現(xiàn)方法代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
datatables 帶查詢條件java服務(wù)端分頁處理實(shí)例
本篇文章主要介紹了datatables 帶查詢條件java服務(wù)端分頁處理實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Java如何導(dǎo)出多個(gè)excel并打包壓縮成.zip文件
本文介紹了Java如何導(dǎo)出多個(gè)excel文件并將這些文件打包壓縮成zip格式,首先,需要從數(shù)據(jù)庫中獲取數(shù)據(jù)并導(dǎo)出到指定位置形成excel文件,接著,將這些數(shù)據(jù)分散到不同的excel文件中,最后,使用相關(guān)的Java工具類對(duì)這些excel文件進(jìn)行打包壓縮2024-09-09
Java基于API接口爬取商品數(shù)據(jù)的示例代碼
Java作為一種流行的編程語言,可以用于編寫程序來調(diào)用這些API接口,從而獲取商品數(shù)據(jù),本文將介紹如何使用Java基于API接口爬取商品數(shù)據(jù),包括請(qǐng)求API、解析JSON數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)等步驟,并提供相應(yīng)的代碼示例,感興趣的朋友跟隨小編一起看看吧2023-10-10
IntelliJ IDEA下SpringBoot如何指定某一個(gè)配置文件啟動(dòng)項(xiàng)目
這篇文章主要介紹了IntelliJ IDEA下SpringBoot如何指定某一個(gè)配置文件啟動(dòng)項(xiàng)目問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

