成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:說說你對(duì)Java異常的理解

開發(fā) 后端
不管是工作中還是面試中,異常這一塊還是非常重要的。作為Java開發(fā)人員來說,學(xué)會(huì)如何處理異常,哪些異常必須自己處理,哪些異??梢酝鈷伒鹊?這些都是必需品。

[[354912]]

背景

不管是工作中還是面試中,異常這一塊還是非常重要的。作為Java開發(fā)人員來說,學(xué)會(huì)如何處理異常,哪些異常必須自己處理,哪些異??梢酝鈷伒鹊?這些都是必需品。

生活總有你意想不到的驚喜和意外,我們的code也是一樣。

 

異常不懂,佛祖也保佑不了你。

今天我們就來聊聊Java異常的話題。我們可以把Throwable當(dāng)做Java異常的根類(祖宗)。因?yàn)閷?shí)現(xiàn)類太多,所以下面大致列了幾個(gè)常見的實(shí)現(xiàn)類。

 

Error

錯(cuò)誤:表示系統(tǒng)級(jí)的錯(cuò)誤和程序不必處理的異常,是 Java 運(yùn)行環(huán)境中的內(nèi)部錯(cuò)誤或者硬件問題。

例如:內(nèi)存資源不足等。

對(duì)于這種錯(cuò)誤,程序基本無能為力,除了退出運(yùn)行外別無選擇,它是由 Java 虛擬機(jī)拋出的。

Exception

異常:表示需要捕捉或者需要程序進(jìn)行處理的異常,它處理的是因?yàn)槌绦蛟O(shè)計(jì)的瑕疵而引起的問題或者在外的輸入等引起的一般性問題,是程序必須處理的。

Exception 又分為運(yùn)行時(shí)異常,受檢查異常。

RuntimeException(運(yùn)行時(shí)異常)

表示無法讓程序恢復(fù)的異常,導(dǎo)致的原因通常是因?yàn)閳?zhí)行了錯(cuò)誤的操作,建議終止邏輯,因此,編譯器不檢查這些異常。

CheckedException(受檢查異常)

是表示程序可以處理的異常,也即表示程序可以修復(fù)(由程序自己接受異常并且做出處理),所以稱之為受檢查異常。

Checked異常的處理方式有兩種:

當(dāng)前方法明確知道如何處理該異常,程序應(yīng)該使用try--catch 代碼塊來捕獲異常,然后在對(duì)應(yīng)的catch模塊中修復(fù)異常。

當(dāng)前方法不知道如何處理這種異常,應(yīng)該定義該方法時(shí)就聲明跑出該異常。

 

Throwable 類常用方法?

  • getMessage()方法:返回異常發(fā)生時(shí)的詳細(xì)信息。
  • getCause()方法:獲得導(dǎo)致當(dāng)前 Throwable 異常的 Throwable 異常。
  • getStackTrace() 方法:獲得 Throwable對(duì)象封裝的異常信息。
  • printStackTrace()方法:在控制臺(tái)上打印。

請(qǐng)列出 5 個(gè)運(yùn)行時(shí)常見異常?

  • NullPointerException
  • IndexOutOfBoundsException
  • ClassCastException
  • ArrayStoreException
  • BufferOverflowException

異常處理有哪些關(guān)鍵字?

拋出異常:throw,throws

捕獲異常:try,catch,finally

 

throw 與 throws 的區(qū)別 ?

  • throw ,用于在程序中顯式地拋出一個(gè)異常實(shí)例。
  • throws ,用于指出在該方法中沒有處理的異常。每個(gè)方法必須顯式指明哪些異常沒有處理,以便該方法的調(diào)用者可以預(yù)防可能發(fā)生的異常。最后,多個(gè)異常用逗號(hào)分隔。

異常處理中 finally 語句塊的重要性?

不管程序是否發(fā)生了異常, finally 語句塊都會(huì)被執(zhí)行,甚至當(dāng)沒有catch 聲明但拋出了一個(gè)異常時(shí), finally 語句塊也會(huì)被執(zhí)行。

finally 語句塊通常用于釋放資源,如 I/O 緩沖區(qū)、數(shù)據(jù)庫連接、釋放鎖等等。

異常使用方式

 

 

異常處理規(guī)則

 

如何自定義異常?

除了JDK定義好的異常類以外,在開發(fā)過程中我們也可以根據(jù)業(yè)務(wù)的異常情況自定義異常類。

用戶自定義異常都應(yīng)該繼承Exception基類,如果用戶想自定義Runtime異常,則應(yīng)該繼承RuntimeException基類。

定義異常時(shí),通常有兩個(gè)構(gòu)造方法:

  • 無參構(gòu)造方法
  • 有參構(gòu)造方法,這個(gè)參數(shù)是字符串,這個(gè)字符串作為對(duì)該異常信息描述,也就是getMessage()方法的返回值(比如說:“用戶密碼有誤”、“xx接口返回參數(shù)為空”等)。

不過在項(xiàng)目中可能沒這么簡單,可能還會(huì)對(duì)其進(jìn)行再次封裝。

但是基本上都是有兩個(gè)參數(shù):code+msg;

code:主要是對(duì)業(yè)務(wù)中的異常進(jìn)行歸類,結(jié)合Http的code來定義。

msg:主要是業(yè)務(wù)異常的信息提示。

 

 

你們項(xiàng)目中的自定義異常類是如何封裝的呢?不知道的就回去翻翻你們項(xiàng)目中的自定義是如何寫的,這就把學(xué)習(xí)和實(shí)踐結(jié)合起來了。

總結(jié)

本文一共講述了下面五個(gè)點(diǎn):

 

  • Java中異常的分類
  • 常見異常有哪些
  • 相關(guān)的關(guān)鍵字如何使用
  • 異常的處理規(guī)則
  • 如何自定義異常

本文轉(zhuǎn)載自微信公眾號(hào)「Java后端技術(shù)全?!?,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java后端技術(shù)全棧公眾號(hào)。 

 

責(zé)任編輯:武曉燕 來源: Java后端技術(shù)全棧
相關(guān)推薦

2021-11-25 10:18:42

RESTfulJava互聯(lián)網(wǎng)

2021-08-09 07:47:40

Git面試版本

2020-06-12 15:50:56

options前端服務(wù)器

2021-09-16 07:52:18

算法應(yīng)用場景

2019-05-10 10:50:04

Spring AOPJDK動(dòng)態(tài)代理CGLIB動(dòng)態(tài)代理

2021-11-05 07:47:56

代理模式對(duì)象

2020-12-04 06:27:04

序列化面試官Java

2021-11-09 08:51:13

模式命令面試

2021-11-02 22:04:58

模式

2021-11-10 07:47:49

組合模式場景

2022-02-21 17:24:18

序列化對(duì)象存儲(chǔ)

2021-08-16 08:33:26

git

2021-11-03 14:10:28

工廠模式場景

2021-09-26 10:57:16

集合操作場景

2021-09-27 06:50:04

非線性數(shù)據(jù)

2021-09-29 07:24:20

場景數(shù)據(jù)

2021-08-19 08:36:22

Git ResetGit Revert版本

2021-10-19 08:07:21

微信小程序代碼

2021-09-06 10:51:27

TypeScriptJavaScript

2021-09-28 07:12:09

測試路徑
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品久久精品 | 嫩草视频入口 | 久久久久久美女 | 亚洲 欧美 激情 另类 校园 | 日韩不卡视频在线观看 | 国产69精品久久久久777 | 亚洲一区免费视频 | 伊人青青久久 | 91av国产在线视频 | 北条麻妃一区二区三区在线视频 | 国产综合久久久久久鬼色 | 久操av在线 | 日韩亚洲视频 | www.久久| 美女黄色在线观看 | 国产综合av| 久久亚洲一区二区三 | 国产精品国产三级国产aⅴ中文 | 特级生活片 | 精品免费国产 | 91文字幕巨乱亚洲香蕉 | 青娱乐国产 | 亚洲一区二区三区四区五区中文 | 综合久久一区 | 国产成人一区二区三区 | 中文av在线播放 | 一区二区三区亚洲视频 | 国产精品久久久久久久一区探花 | 国产一区二区不卡 | 蜜臀91视频 | 天天射色综合 | 欧美精品欧美精品系列 | 春色av | 久久久国产一区二区三区 | 国产成人啪免费观看软件 | 这里精品 | 国产精品不卡一区 | 久久精品国产99国产 | 午夜精品久久久久久久久久久久 | 精品美女在线观看视频在线观看 | 一区二区av|