最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java:什么是異常?什么是異常處理?

2023-02-21 14:48 作者:粵嵌科技  | 我要投稿

  Java中的異常處理不是一個(gè)容易的話題。初學(xué)者很難理解,即使是經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員也可以花幾個(gè)小時(shí)討論應(yīng)該如何拋出或處理哪些Java異常。

  這就是為什么大多數(shù)開(kāi)發(fā)團(tuán)隊(duì)都有自己的一套關(guān)于如何使用它們的規(guī)則。如果你是一個(gè)團(tuán)隊(duì)的新手,你可能會(huì)驚訝于這些規(guī)則與你以前使用過(guò)的規(guī)則有多么不同。

  什么是異常?

  簡(jiǎn)而言之,異常是程序執(zhí)行過(guò)程中的異常情況。

  出現(xiàn)問(wèn)題時(shí)會(huì)發(fā)生異常。試圖打開(kāi)文件,但文件不存在?這就是異常。試圖對(duì)對(duì)象調(diào)用方法,但變量為空?這也是異常。

  什么是異常處理?

  異常是不應(yīng)該發(fā)生的壞事。但既然它們確實(shí)發(fā)生了,我們就需要處理它們。這種“處理”就是我們所說(shuō)的異常處理。

  異常處理是一種錯(cuò)誤處理機(jī)制。當(dāng)出現(xiàn)問(wèn)題時(shí),會(huì)拋出異常。如果不執(zhí)行任何操作,則異常會(huì)導(dǎo)致應(yīng)用程序崩潰。

  或者您可以選擇處理異常。也就是說(shuō),您確認(rèn)問(wèn)題發(fā)生了,防止應(yīng)用程序崩潰,并采取必要的步驟,以便從錯(cuò)誤中恢復(fù)或失敗。

  一如既往的錯(cuò)誤處理

  異常處理是一種錯(cuò)誤處理機(jī)制,但它不是唯一的機(jī)制。如今,絕大多數(shù)編程語(yǔ)言都將異常處理作為一項(xiàng)功能提供,但情況并不總是這樣。

  

  沒(méi)有異常的語(yǔ)言如何處理錯(cuò)誤?

  一種流行的方法是返回錯(cuò)誤代碼。例如,假設(shè)您有一個(gè)C函數(shù),它接受一個(gè)整數(shù)數(shù)組和一個(gè)整數(shù),然后搜索并返回與指定數(shù)字匹配的第一個(gè)項(xiàng)的索引。

  當(dāng)在數(shù)組中找不到該項(xiàng)時(shí)該怎么辦?一個(gè)普遍的選擇是返回-1。這種方法的優(yōu)點(diǎn)是讓代碼易于推理:不會(huì)打斷代碼,也不會(huì)跳過(guò)代碼。只是返回值的舊函數(shù)。

  另一方面,這種錯(cuò)誤處理策略鼓勵(lì)函數(shù)的使用者始終檢查錯(cuò)誤值。

  這些驗(yàn)證的數(shù)量之多會(huì)使代碼受到污染。大量的防御性檢查可能會(huì)隱藏重要的業(yè)務(wù)邏輯,從而降低代碼的可讀性和可維護(hù)性。

  錯(cuò)誤代碼的另一個(gè)嚴(yán)重缺點(diǎn)是缺乏上下文。您可能知道代碼“-5”意味著找不到某個(gè)文件,但哪個(gè)文件?整數(shù)不能輕易攜帶該信息。

  這種方法的另一個(gè)問(wèn)題是,有時(shí),您無(wú)法返回值(例如,想想構(gòu)造函數(shù))。初始化對(duì)象時(shí)出錯(cuò)?有了錯(cuò)誤代碼,你就無(wú)能為力了。

  異常的例外情況

  出現(xiàn)異常是為了解決你剛剛讀到的問(wèn)題。

  當(dāng)拋出異常時(shí),程序的控制流被中斷。如果沒(méi)有人處理該異常,則會(huì)導(dǎo)致程序崩潰。用戶將看到異常消息,但他們很可能無(wú)法理解。消息甚至可能無(wú)法本地化為其語(yǔ)言。

  簡(jiǎn)而言之,這不是一個(gè)好的用戶體驗(yàn)。

  因此,您需要處理異常(即使只是為了記錄問(wèn)題、顯示更友好的錯(cuò)誤消息,然后退出應(yīng)用程序)。

  為了處理拋出的異常,我們必須捕獲它。我們通過(guò)使用異常處理塊來(lái)實(shí)現(xiàn)這一點(diǎn)。當(dāng)我們捕獲異常時(shí),程序的流控制被處理到異常處理塊。在那里,我們可以做出必要的安排來(lái)處理例外情況。


Java:什么是異常?什么是異常處理?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
门头沟区| 天镇县| 西青区| 阿勒泰市| 南充市| 宜城市| 伽师县| 敦化市| 湖州市| 乐清市| 来宾市| 会同县| 仲巴县| 万盛区| 京山县| 昭通市| 乐陵市| 黎川县| 玛纳斯县| 黄骅市| 桃园县| 贵德县| 清徐县| 田东县| 扎兰屯市| 喀喇沁旗| 安塞县| 岳阳市| 宁海县| 乌恰县| 泗阳县| 瑞丽市| 资溪县| 巴林右旗| 万州区| 济宁市| 常熟市| 康保县| 宁海县| 慈溪市| 宜昌市|