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

在這里插入圖片描述


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


文章目錄

  • 前言
  • 異常方法(Throwable類)
    • Throwable類的方法
  • 捕獲異常
    • 多重捕獲塊


前言

異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤00有時候是可以避免的,學習一些異常處理方式往往可以使我們編程的時間大大減少。
注:本文為系列文章,前文可點擊觀看??【JAVA】我們該如何規避代碼中可能出現的錯誤?(一)
請添加圖片描述

異常方法(Throwable類)

Java中的Throwable類是所有錯誤或異常的父類,它有兩個子類:ExceptionErrorException表示程序可以處理的異常,而Error表示程序無法處理的錯誤。

Throwable類定義了許多方法來獲取異常信息,例如getMessage()方法可以獲取異常的描述信息,getStackTrace()方法可以獲取異常發生時調用堆棧中的信息,toString()方法可以將異常轉換為字符串。子類可以根據需要覆蓋這些方法來提供特定的異常信息。

通常情況下,在Java程序中拋出異常時,可以使用try-catch語句捕獲異常并進行處理。如果沒有處理異常,程序將會終止并輸出異常信息。當然也可以使用throws關鍵字將異常拋給上層調用者處理。

在這里插入圖片描述

Throwable類的方法

public String getMessage()

返回關于發生的異常的詳細信息。這個消息在Throwable 類的構造函數中初始化了。

public Throwable getCause()

返回一個 Throwable 對象代表異常原因。

public String toString()

返回此 Throwable 的簡短描述。

public void printStackTrace()

將此 Throwable 及其回溯打印到標準錯誤流。。

public StackTraceElement [] getStackTrace()

返回一個包含堆棧層次的數組。下標為0的元素代表棧頂,最后一個元素代表方法調用堆棧的棧底。

public Throwable fillInStackTrace()

用當前的調用棧層次填充Throwable 對象棧層次,添加到棧層次任何先前信息中。

捕獲異常

try
{// 程序代碼
}catch(ExceptionName e1)
{//Catch 塊
}

在Java中,捕獲異常是通過try-catch語句塊實現的。try語句塊中包含可能拋出異常的代碼catch語句塊中處理異常。如果try語句塊中的代碼拋出異常,則會嘗試尋找與異常類型匹配的catch語句塊來處理異常。在catch語句塊中,可以使用異常對象的信息來執行任何必要的操作,例如輸出錯誤消息、記錄日志或恢復程序執行。


try {// 可能拋出異常的代碼int x = 10/0; // 除以0將會拋出一個ArithmeticException異常
} catch (ArithmeticException e) {// 處理異常System.out.println("發生異常:" + e.getMessage());e.printStackTrace();
}

在上面的例子中,當執行10/0操作時,將會拋出一個ArithmeticException異常。catch語句塊中的代碼將處理該異常,輸出錯誤消息并打印異常堆棧跟蹤信息。

在這里插入圖片描述

多重捕獲塊

一個 try 代碼塊后面跟隨多個 catch 代碼塊的情況就叫多重捕獲。
多重捕獲塊的語法如下所示:

try{// 程序代碼
}catch(異常類型1 異常的變量名1){// 程序代碼
}catch(異常類型2 異常的變量名2){// 程序代碼
}catch(異常類型3 異常的變量名3){// 程序代碼
}

上面的代碼段包含了 3 個 catch塊。
可以在 try 語句后面添加任意數量的 catch 塊。
如果保護代碼中發生異常,異常被拋給第一個 catch 塊。
如果拋出異常的數據類型與 ExceptionType1 匹配,它在這里就會被捕獲。
如果不匹配,它會被傳遞給第二個 catch 塊。
如此,直到異常被捕獲或者通過所有的 catch 塊。

在這里插入圖片描述

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

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

相關文章

git-3

1.如何讓工作區的文件恢復為和暫存區一樣? 工作區所作的變更還不及暫存區的變更好,想從暫存區拷貝到工作區,變更工作區(恢復成和暫存區一樣的狀態),想到用git checkout -- 文件名 2.怎樣取消暫存區部分文件的更改? 如…

無損壓縮技巧:減小PDF文件尺寸的有效方法

我們在制作pdf文檔的時候,會加入許多內容,文字、圖片等等,素材添加的過多之后就會導致pdf文檔特別大,在上傳或者儲存時,就會特別不方便,所以今天就告訴大家一個pdf壓縮的方法,使用pdf在線壓縮工…

4-Docker命令之docker info

后續為大家逐個講解一下docker常用命令及其相關用法。docker常用命令查看如下: [root@centos79 ~]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec…

洛谷 P1883 函數

P1883 函數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) Error Curves - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 這兩題是一模一樣的,過一題水兩題。 分析 主要難點在于證明F(x)是一個單峰函數可以被三分,但是我隨便畫了幾個f(x)之后發現好像…

MySQL的Redo Log跟Binlog

文章目錄 概要Redo Log日志Redo Log的作用Redo Log的寫入機制 Binlog日志Binlog的作用Binlog寫入機制 兩段提交 概要 Redo Log和Binlog是MySQL日志系統中非常重要的兩種機制,也有很多相似之處,本文主要介紹兩者細節和區別。 Redo Log日志 Redo Log的作…

Docker+ Jenkins+Maven+git自動化部署

環境:Centos7 JDK1.8 Maven3.3.9 Git 2.40 Docker 20.10.17 準備工作: 安裝Docker Centos7默認的yum安裝的docker是1.13,版本太低,很多鏡像都要Docker版本要求,升級Docker版本。 卸載已安裝Docker: yum …

你知道如何實現游戲中的透視效果嗎?

引言 游戲中的透視效果可以合理運用CtrlCV實現。 不知道大家有沒有這樣一段經歷:在做Cocos項目時需要一些特定的Shader去做一些特定的效果,例如透視、高光、濾鏡等等,想自己寫吧,不怎么會啊,網上又找不到&#xff0c…

27 - 如何使用設計模式優化并發編程?

在我們使用多線程編程時,很多時候需要根據業務場景設計一套業務功能。其實,在多線程編程中,本身就存在很多成熟的功能設計模式,學好它們,用好它們,那就是如虎添翼了。今天我就帶你了解幾種并發編程中常用的…

redis-cluster集群(目的:高可用)

1、特點 集群由多個node節點組成,redis數據分布在這些節點中,在集群中分為主節點和從節點,一個主對應一個從,所有組的主從形成一個集群,每組的數據是獨立的,并且集群自帶哨兵模式 2、工作原理 集群模式中…

【ZedBoard學習實例1】 VGA顯示彩條

ZedBoard學習實例1 VGA顯示彩條 ZedBoard學習實例1 VGA顯示彩條參考文章改進 ZedBoard學習實例1 VGA顯示彩條 參考文章 彩條控制verilog代碼 主體參考了該文章的代碼,文中還介紹了相關的電路圖,還有ZedBoard的手冊內容。19201080分辨率顯示器的參數 針…

重生之我是一名程序員 37 ——C語言中的棧溢出問題

哈嘍啊大家晚上好! 今天呢給大家帶來一個燒腦的知識——C語言中的棧溢出問題。那什么是棧溢出呢?棧溢出指的是當程序在執行函數調用時,為了保護函數的局部變量和返回地址,將這些數據存儲在棧中。如果函數在函數調用時使用了過多的…

Sentinel核心類解讀:Entry

默認情況下,Sentinel會將controller中的方法作為被保護資源,Sentinel中的資源用Entry來表示。 Sentinel中Entry可以理解為每次進入資源的一個憑證,如果調用SphO.entry()或者SphU.entry()能獲取Entry對象,代表獲取了憑證&#xff…

安卓手機便簽APP用哪個,手機上好用的便簽APP是什么

在日常生活及工作方面,總是有許多做不完的事情需要大家來處理,當多項任務堆疊交叉在一起時,很容易漏掉一些項目,這時候大家會借助經常攜帶的手機來記錄容易忘記的事情,如手機上的鬧鐘、定時提醒軟件都可以用來記錄待辦…

2023亞太杯數學建模A題思路分析 - 采果機器人的圖像識別技術

1 賽題 問題A 采果機器人的圖像識別技術 中國是世界上最大的蘋果生產國,年產量約為3500萬噸。與此同時,中國也是世 界上最大的蘋果出口國,全球每兩個蘋果中就有一個,全球超過六分之一的蘋果出口 自中國。中國提出了一帶一路倡議…

JDK11新特性

目錄 一、JShell 二、Dynamic Class-File Constants類文件新添的一種結構 三、局部變量類型推斷(var ”關鍵字”) 四、新加的一些實用API 1. 新的本機不可修改集合API 2. Stream 加強 3. String 加強 4. Optional 加強 5. 改進的文件API 五、移…

canvas

Canvas 是 Android 中用于繪制圖形的重要類,它提供了許多用于繪制的常用方法。以下是一些常用的 Canvas 方法: 繪制顏色和背景: drawColor(int color): 用指定顏色填充整個畫布。drawRGB(int r, int g, int b): 用 RGB 值指定顏色填充整個畫布…

進程池,線程池與跨進程數據共享爬取某岸網圖片

看教程的時候看到一個,生產者跟消費者的概念比較有意思,但是給的代碼有問題無法正常運行,于是我就搗鼓了一下。 基本概念就是: 生產者: 一個進程獲取網頁沒頁的圖片連接(主進程…

Django框架之中間件

目錄 一、引入 二、Django中間件介紹 【1】什么是Django中間件 【2】Django中間件的作用 【3】示例 三、Django請求生命周期流程圖 四、Django中間件是Django的門戶 五、Django中間件詳解 六、中間件必須要掌握的兩個方法 (1) process_request (2) process_respon…

Redis集群環境各節點無法互相發現與Hash槽分配異常 CLUSTERDOWN Hash slot not served的解決方式

原創/朱季謙 在搭建Redis5.x版本的集群環境曾出現各節點無法互相發現與Hash槽分配異常 CLUSTERDOWN Hash slot not served的情況,故而把解決方式記錄下來。 在以下三臺虛擬機機器搭建Redis集群—— 192.168.200.160192.168.200.161192.168.200.162啟動三臺Redis集…

芯知識 | MP3語音芯片IC的優勢特征及其在現代科技應用中的價值

隨著科技的飛速發展,MP3語音芯片作為一種高度集成的音頻處理解決方案,在現代電子產品中發揮著越來越重要的作用。本文將分析MP3語音芯片的優勢特征,并探討其在各個領域的應用價值。 一、MP3語音芯片的優勢特征 MP3語音芯片具有多種顯著的優…