【JAVA】我們該如何規避代碼中可能出現的錯誤?(一)

在這里插入圖片描述


個人主頁:【😊個人主頁】
系列專欄:【??初識JAVA】


文章目錄

  • 前言
  • 三種類型的異常
  • 異常處理
  • JAVA內置異常類
  • Exception 類的層次


前言

異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的,學習一些異常處理方式往往可以使我們編程的時間大大減少。
在這里插入圖片描述

三種類型的異常

  • 檢查性異常:最具代表的檢查性異常是用戶錯誤或問題引起的異常,這是程序員無法預見的。例如要打開一個不存在文件時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。
  • 運行時異常: 運行時異常是可能被程序員避免的異常。與檢查性異常相反,運行時異常可以在編譯時被忽略。
  • 錯誤錯誤不是異常,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略。例如,當棧溢出時,一個錯誤就發生了,它們在編譯也檢查不到的。

異常處理

Java中的異常處理是一種機制,用于處理程序中可能出現的錯誤和異常。當程序遇到錯誤或異常時,它會產生一個異常對象,并拋出該對象,然后程序控制權就會被傳遞到相應的異常處理程序中。

主要步驟:

  1. 在程序中可能發生異常的代碼周圍使用try-catch語句塊。
  2. 在try語句塊中包含可能產生異常的代碼。
  3. 在catch語句塊中編寫處理異常的代碼。
  4. 可以使用多個catch塊來處理不同類型的異常
  5. 可以使用finally語句塊來在任何情況下執行某些代碼(例如關閉文件或釋放資源)。

在這里插入圖片描述

try {// 可能會拋出異常的代碼
} catch (ExceptionType1 ex) {// 處理類型為ExceptionType1的異常
} catch (ExceptionType2 ex) {// 處理類型為ExceptionType2的異常
} finally {// 在try或catch塊結束后一定會執行的代碼
}

我們使用了一個try-catch-finally語句塊來處理可能出現的異常。如果try塊中的代碼拋出了類型為ExceptionType1的異常,那么程序將跳轉到第一個catch塊,并執行相應的異常處理代碼。如果try塊中的代碼拋出了類型為ExceptionType2的異常,那么程序將跳轉到第二個catch塊,并執行相應的異常處理代碼。無論在try塊中發生了什么,finally塊中的代碼都會被執行

JAVA內置異常類

為了處理可能出現的異常,Java提供了一些內置的異常類
Java 語言定義的一些異常類在 java.lang 標準包中。
標準運行時異常類的子類是最常見的異常類。由于 java.lang 包是默認加載到所有的 Java 程序的,所以大部分從運行時異常類繼承而來的異常都可以直接使用。

常見的Java內置異常類:
ArithmeticException:數學運算異常,例如除以零操作。
ArrayIndexOutOfBoundsException:數組下標越界異常,例如訪問不存在的數組元素。
ClassNotFoundException:類找不到異常,例如使用Class.forName()方法時,找不到所需的類。
IOException:輸入輸出異常,例如讀取或寫入文件時發生的異常。
NullPointerException:空指針異常,例如調用空對象的方法或屬性。
IllegalArgumentException:非法參數異常,例如傳遞給方法的參數不合法。
InterruptedException:線程中斷異常,例如調用Thread.sleep()方法時,線程被其他線程中斷。
RuntimeException:運行時異常,例如在程序運行過程中發生的未知異常。
每個異常類都有自己的特點和處理方式,處理異常是Java編程中的一個重要概念

Exception 類的層次

所有的異常類是從 java.lang.Exception 類繼承的子類。
Exception 類是 Throwable 類的子類。除了Exception類外,Throwable還有一個子類Error 。

Java 程序通常不捕獲錯誤。錯誤一般發生在嚴重故障時,它們在Java程序處理的范疇之外
Error 用來指示運行時環境發生的錯誤。
例如,JVM 內存溢出。一般地,程序不會從錯誤中恢復。
異常類有兩個主要的子類:IOException 類和 RuntimeException 類。

在這里插入圖片描述

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

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

相關文章

【BASH】回顧與知識點梳理(三十三)

【BASH】回顧與知識點梳理 三十三 三十三. 認識系統服務 (daemons)33.1 什么是 daemon 與服務 (service)早期 System V 的 init 管理行為中 daemon 的主要分類 (Optional)systemd 使用的 unit 分類systemd 的配置文件放置目錄systemd 的 unit 類型分類說明 33.2 透過 systemctl…

Grounding dino + segment anything + stable diffusion 實現圖片編輯

目錄 總體介紹總體流程 模塊介紹目標檢測: grounding dino目標分割:Segment Anything Model (SAM)整體思路模型結構:數據引擎 圖片繪制 集成樣例 其他問題附錄 總體介紹 總體流程 本方案用到了三個步驟,按順序依次為&#xff1a…

Tomcat 部署優化

Tomcat Tomcat 開放源代碼web應用服務器,是由java代碼開發的 tomcat就是處理動態請求和基于java代碼的頁面開發 可以在html當中寫入java代碼,tomcat可以解析html頁面當中的iava,執行動態請求 動態頁面機制有問題:不對tomcat進行優…

vue 使用indexDB 簡單完整邏輯

1 npm npm install idb 2 代碼 <template><div><p>Data: {{ data }}</p><button click"fetchData">Fetch Data</button></div> </template><script> import { openDB } from idb;export default {data() {…

eqtl-GWAS和GWAS-GWAS

目前教程中有eqtl-GWAS和GWAS-GWAS兩種模式&#xff0c;其他模式比較少見&#xff0c;還未進行開發 數據類型cc為分類變量即case/control&#xff0c;quant為連續變量&#xff0c;eqtl數據默認quant coloc.abf有兩個比較需要注意的點&#xff0c;就是數據集中N是代表樣本量&am…

解決Windows系統遠程登陸后vscdoe無法輸入字符,鍵盤沒有反應,鼠標可以點擊,沒有反應

文章目錄 前言操作過程 前言 使用vscode編譯器時&#xff0c;通過遠程登錄或者屏幕鎖屏解鎖后&#xff0c;vscode出現無法輸入字符內容&#xff0c;但vscode沒有死機&#xff0c;切換到其他軟件的窗口再切換回來后&#xff0c;可以使用鼠標點擊&#xff0c;但是只要使用鍵盤輸…

【壓測】wg/wrk 輕量級壓測

wg/wrk 輕量級壓測 說明&#xff1a;環境是 centos&#xff0c;不過現在 centos 免費版本不再更新和維護了&#xff0c;所以大家可以用阿里云的或者用 ubuntu 內核 用的 https://github.com/wg/wrk.git 有 35k star 然后據我了解&#xff0c;windows 用 wrk 壓測有點麻煩&…

[Docker精進篇] Docker鏡像構建和實踐 (三)

前言&#xff1a; Docker鏡像構建的作用是將應用程序及其依賴打包到一個可移植、自包含的鏡像中&#xff0c;以便在不同環境中快速、可靠地部署和運行應用程序。 文章目錄 Docker鏡像構建1??是什么&#xff1f;2??為什么&#xff1f;3??鏡像構建一、用現有容器構建新鏡像…

【IMX6ULL驅動開發學習】08.馬達驅動實戰:驅動編寫、手動注冊平臺設備和設備樹添加節點信息

目錄 一、使用設備樹 1.1 修改設備樹流程 二、手動創建平臺設備 三、總結&#xff08;附驅動程序&#xff09; 前情提要&#xff1a;???????【IMX6ULL驅動開發學習】07.驅動程序分離的思想之平臺總線設備驅動模型和設備樹_阿龍還在寫代碼的博客-CSDN博客 手動注冊…

Android中如何不編譯源生模塊

如果想讓自己的app 替換系統的app 比如使用閃電瀏覽器替換系統的Browser 首先把閃電瀏覽器放到 vendor/rockchip/common/apps Android.mk LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE : Lightning LOCAL_SRC_FILES : $(LOCAL_MODULE).apk LOCAL_MODULE_C…

英語詞法——冠詞

冠詞是一種虛詞,與名詞連用,放在名詞的前面,說明或限制該名詞所表示的人或物是泛指的還是特指的。冠詞是最主要、最典型的限定詞。冠詞可以分為不定冠詞a,an,定冠詞the和零冠詞(即不用任何冠詞的場合)三種。 第一節 定冠詞 定冠詞the用于各類名詞(單數可數名詞、復數可…

linux 命令- systemctl

systemctl 參數說明 1、使用語法 用法&#xff1a;systemctl [OPTIONS…] {COMMAND} … 2 、參數說明 參數參數說明start立刻啟動后面接的unitstop立刻關閉后面接的unitrestart立刻關閉后啟動后面接的unit&#xff0c;亦即執行stop再start的意思reload不關閉后面接的unit的…

Elasticsearch查詢之Disjunction Max Query

前言 Disjunction Max Query 又稱最佳 best_fields 匹配策略&#xff0c;用來優化當查詢關鍵詞出現在多個字段中&#xff0c;以單個字段的最大評分作為文檔的最終評分&#xff0c;從而使得匹配結果更加合理 寫入數據 如下的兩條例子數據&#xff1a; docId: 1 title: java …

基于 Redis 實現分布式限流

基于 Redis 實現分布式限流 一、 簡介二、分布式限流1 數據結構1.1 Redis List1.2 Redis Set1.3 Redis Sorted Set 2 實現分布式限流3 實現原理分析 三、分布式限流算法1. 計數器算法2. 漏斗算法3. 令牌桶算法 四、分布式限流實戰1. 單機限流實現2. 基于Redis Clusters的分布式…

常見程序搜索關鍵字轉碼

個別搜索類的網站因為用戶惡意搜索出現誤攔截情況&#xff0c;這類網站本身沒有非法信息&#xff0c;只是因為把搜索關鍵字顯示在網頁中&#xff08;如下圖&#xff09;&#xff0c;可以參考下面方法對輸出的關鍵字進行轉碼 DEDECMS程序 本文針對Dedecms程序進行搜索轉碼&…

優先級隊列【C++】

文章目錄 priority_queuepriority_queue 使用priority_queue的模擬實現向上調整算法向下調整算法pushpoptopsizeempty 仿函數完整代碼 priority_queue 優先隊列&#xff08;priority_queue&#xff09;也是隊列的一種&#xff0c;priority_queue的接口是和queue的接口是相同的…

快速上手Vue開發:在項目中如何配置 tsconfig.json 文件?

文章目錄 一、簡介二、配置1、示例2、編譯器選項列表 一、簡介 tsconfig.json文件中指定了用來編譯這個項目的根文件和編譯選項。 二、配置 1、示例 {"compilerOptions": {"baseUrl": ".","paths": {"/*": ["src/*&…

C#__基本特性和使用

// 特性&#xff08;attribute&#xff09;: // 一種允許我們向程序集添加元數據的語言結構 // 用于保存程序結構信息的某種特殊類型的類 // 類似“批注”&#xff0c;用于解釋說明 #define IsShowMessage // 宏定義&#xff0c;在開頭定義&#xff0…

uni-app彈窗列表滾動, 彈框下面的內容也跟隨滾動解決方案

滑動彈窗里的列表&#xff0c;彈框下面的內容也會跟著滑動&#xff0c;導致彈窗中的列表不能正常滾動 1.彈窗組件代碼&#xff0c;需要在最外層的view中加入touchmove.stop.prevent"moveHandle"&#xff0c;且彈窗中需要滾動的列表要使用scroll-view標簽包裹起來&…

Python爬蟲——requests_post請求

import requests import jsonurl https://fanyi.baidu.com/sugheaders {User-Agent: ,Cookie: }data {kw: hello }response requests.post(url, data, headersheaders)content response.textobj json.loads(content.encode(utf-8)) print(obj)總結&#xff1a; post請求…