JAVA八股文:異常有哪些種類,可以舉幾個例子嗎?Throwable類有哪些常見方法?

  • Throwable、Error 與 Exception

    • 所有的異常類型都繼承自 java.lang.Throwable

    • 其中 Error(比如 OutOfMemoryErrorStackOverflowError、類加載失敗等)表示 JVM 自身或運行環境的問題,不應該通常無法由應用程序去捕獲或恢復,出現 Error 通常意味著程序無法繼續安全運行。

    • Exception 則代表應用層“可感知”的問題。

  • Checked Exception 與 Unchecked Exception

    • Checked Exception(受檢異常)都是直接繼承自 Exception不繼承RuntimeException 的異常。編譯器強制要求方法要么 throws 出去,讓調用者去處理(聲明式),要么在方法內部用 try–catch 捕獲并處理,否則代碼都無法通過編譯。

    • Unchecked Exception(非受檢異常)指的是繼承自 RuntimeExceptionError 的異常,編譯器不強制你捕獲或聲明。最常見的如 NullPointerExceptionArrayIndexOutOfBoundsExceptionIllegalArgumentException 等。

  • 為什么要設計 Checked Exception?

    • 可恢復性:Checked 異常通常表示“外部環境或 IO 操作”這類有可能因外部條件(文件不存在、網絡中斷、權限不足等)而失敗的場景。這類錯誤是可預見有可能恢復的,Java 通過編譯期強制你去“面對”這些錯誤——要么捕獲,要么往上拋,讓調用鏈上的某一層來決定如何恢復或提示用戶。

    • 增強 API 明示性:當一個方法聲明了 throws IOException,調用者一眼就能知道“這個方法存在讀寫失敗的風險,需要處理或傳遞異常”,有助于寫出更健壯的程序。

    • 并不是因為“底層不安全”,而是因為它們涉及到對程序外部資源的訪問(文件、網絡、數據庫、線程等待等),在這些操作中失敗是常態,而不是程序 bug,需要業務層去合理應對。

Throwable類有哪些常見方法:

1.getMessage()

2.toString()

3.printStackTrace()

4.getLocalizedMessage()

  • getMessage()
    取得最初傳入的錯誤詳情(構造時的那條 String)。

    String msg = e.getMessage();

  • toString()
    默認實現返回 getClass().getName() + ": " + getMessage(),可用于快速打印異常類型和信息。

    System.out.println(e.toString());

  • getLocalizedMessage()
    可被子類覆蓋,用于返回基于當前環境(如不同語言)的錯誤信息。

    String localMsg = e.getLocalizedMessage();

  • printStackTrace()
    將完整的異常棧信息輸出到標準錯誤流(或指定的 PrintStream/PrintWriter),方便定位出錯位置。

    e.printStackTrace(); // 默認輸出到 System.err e.printStackTrace(System.out); // 輸出到控制臺標準輸出

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89345.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89345.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89345.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

.NetCore+Vue快速生產框架開發詳細方案

文章目錄 1. 項目概述 1.1 項目背景1.2 項目目標1.3 核心功能 2. 技術棧選擇 2.1 后端技術棧2.2 前端技術棧2.3 開發工具 3. 系統架構設計 3.1 整體架構3.2 后端架構設計3.3 前端架構設計3.4 微服務考慮 4. 后端.NET核心設計 4.1 項目結構4.2 核心模塊設計4.2.1 用戶模塊4.2.2 …

WPF學習筆記(18)觸發器Trigger

觸發器 1. 概述2. 詳解2.1. Trigger 用法2.2. MultiTrigger 用法2.3. DataTrigger 用法2.4. EventTrigger 用法 總結 1. 概述 官方文檔:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.trigger?viewnetframework-4.8 2. 詳解 在Style中可以指定觸…

記本好書:矩陣力量:線性代數全彩圖解+微課+Python編程

書名:矩陣力量:線性代數全彩圖解微課Python編程 作者:姜偉生 出版社:清華大學出版社 出版時間:2023-06-01 ISBN:9787302632511 品牌方:清華大學出版社有限公司 發現一本好書,但是一…

?Webpack打包流程

Webpack打包流程的核心步驟包括初始化配置、解析入口文件、構建依賴圖、模塊轉換、資源優化和輸出文件?。該流程通過遞歸分析模塊依賴關系,結合加載器和插件處理各類資源,最終生成優化后的靜態文件。 ?核心流程概述? ?初始化配置?:讀取…

入門pytorch-聯邦學習

本文聯邦學習的代碼引用于https://github.com/shaoxiongji/federated-learning 本篇文章相當于帶大家讀一遍聯邦學習的代碼,同時加深了大家對聯邦學習和Pytorch框架的理解。 這里想簡單介紹一下聯邦學習。 聯邦學習說白了,就是假如有 N N N個數據擁有…

半導體和PN結

1. 什么是半導體? 導體,電阻率小,即電流容易通過的材料;Cu 絕緣體,導電性低,即電流不易通過的材料;塑料 半導體,常溫下導電性能介于導體和絕緣體之間,是一種導電可控的…

如何分析大語言模型(LLM)的內部表征來評估文本的“誠實性”

如何分析大語言模型(LLM)的內部表征來評估文本的“誠實性” 基于這樣一個假設:模型在生成誠實和不誠實回答時,其內部狀態會存在系統性差異 LAT :線性人工斷層掃描 我們通過一個生活化的例子來理解如何通過分析大語言模型的內部表征評估文本的“誠實性”。 場景類比:判…

【算法】動態規劃 矩陣 :62. 不同路徑

62. 不同路徑 一個機器人位于一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。 問總共有多少條不同的路徑&…

LabVIEW調用Excel宏實現數據可視化

通過LabVIEW 的 ActiveX 接口,調用 Excel 應用程序,實現打開指定Excel 工作簿并運行其中宏(如 “GraphData” 宏),將工作表數據以圖表形式展示。通過 ActiveX 自動化技術,打通 LabVIEW 與 Excel 交互通道&a…

初始CNN(卷積神經網絡)

卷積神經網絡(Convolutional Neural Network,簡稱 CNN)作為深度學習的重要分支,在圖像識別、目標檢測、語義分割等領域大放異彩。無論是手機上的人臉識別解鎖,還是自動駕駛汽車對道路和行人的識別,背后都離…

深度解析Spring Bean生命周期:從字節碼到可用對象的奇幻旅程

🌱 深度解析Spring Bean生命周期:從字節碼到可用對象的奇幻旅程 你是否曾困惑:為什么PostConstruct有時不執行?為什么循環依賴報錯如此難解?為什么AOP代理在某些場景失效? 本文將徹底拆解Spring Bean的16個…

MySQL 復合查詢和內外連接 -- 子查詢,多表查詢,自連接,合并查詢,表的內外連接

目錄 1. 子查詢 1.1 單行子查詢 1.2 多行子查詢 1.3 多列子查詢 1.4 在 from 子句中使用子查詢 2. 多表查詢 3. 自連接 4. 合并查詢 4.1 union 4.2 union all 5. 表的內連接 6. 表的外連接 下列先給出該博客中所用到的所有表的數據。 (1)部…

【STM32+LAN9252+HAL庫】EtherCAT從站搭建 保姆級教程

目錄 一、生成協議棧及XML文件 二、使用stm32CuboMX配置外設 三、協議棧移植 鑒于本人對EtherCAT的掌握程度十分有限,這篇文章僅作為我搭建基礎從站的過程記錄不做更多講解。本文內容主要為SPI模式的基礎搭建,更多深入的學習資料和細節,大家…

【LeetCode 熱題 100】239. 滑動窗口最大值——(解法二)滑動窗口+單調隊列

Problem: 239. 滑動窗口最大值 題目:給你一個整數數組 nums,有一個大小為 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口內的 k 個數字。滑動窗口每次只向右移動一位。返回滑動窗口中的最大值 。 【LeetCode 熱題 100】239. 滑…

MySQL 8.0 連接 5.x 服務器認證問題

總的來說,答案是:可以,但是需要特別注意認證方式的兼容性問題。 MySQL 8.0 引入了新的默認認證插件 caching_sha2_password,而 MySQL 5.x(及更早版本)使用的是 mysql_native_password。當你用一個 8.0 的客…

Spring原理揭秘(一)

什么是spring? spring框架是一個輕量級的開源的JavaEE框架。 所謂輕量級則是:占用空間小,代碼侵入性低,代碼耦合度低,降低代碼復雜度,可以輕易適配多種框架。 隨著spring的不斷發展,它所占用…

Visual Studio Code自用搜索技巧整理

多文件跨行搜索 用途 在多個日志文件中搜索跨行日志 方法 1.用VS Code打開待搜索文件所在的目錄; 2.按快捷鍵(CtrlShiftF)打開全局搜索; 3.點擊搜索框右側的開啟正則表達式; 4.輸入正則表達式,例如&…

Axure PR 9 驗證碼登錄 案例

大家好,我是大明同學。 這期內容,我們來用Axure來制作一個短信驗證登錄頁面的小案例。 驗證碼登錄小案例 創建手機號輸入框所需的元件 1.打開一個新的 RP 文件并在畫布上打開 Page 1。 2.在元件庫中拖出一個矩形元件,選中矩形元件&#xf…

監聽器模式

1. 問題背景 假設我們有一個 銀行賬戶管理系統,該系統需要監控用戶賬戶余額的變動,并在發生變動時,自動執行一些相關的操作,比如發送 余額變動通知(如短信、郵件等)。為了實現這一功能,我們希望…

帕魯杯應急響應賽題:知攻善防實驗室

一、背景信息 在這個跳躍的數字舞臺上,數據安全成了政企單位穩航的重要壓艙石。某政企單位,作為一艘駛向未來 的巨輪,對數據的把控絲毫不敢松懈。眼下,我們即將啟航一場無與倫比的探險——“信息安全探索之 旅”。 這趟旅程的目的…