www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]這里新人,就來(lái)簡(jiǎn)單說(shuō)說(shuō)自己對(duì)異常的看法吧。java的異常機(jī)制是一把雙刃劍;如果用得好可以做大事情,用不好就會(huì)出現(xiàn)意想不到的問題。1.throw的用法throw是拋出異常所用,不過(guò)下面的例子是不能這樣t

這里新人,就來(lái)簡(jiǎn)單說(shuō)說(shuō)自己對(duì)異常的看法吧。


java的異常機(jī)制是一把雙刃劍;如果用得好可以做大事情,用不好就會(huì)出現(xiàn)意想不到的問題。


1.throw的用法

throw是拋出異常所用,不過(guò)下面的例子是不能這樣throw的:

throw new IOException();

異常鏈的機(jī)制需要保留,且不能隨便拋出空的異常信息。

還有,基本上要避免拋出基于空指針異常的基類異常(RuntimeException、Exception、Throwable)

因?yàn)榭罩羔槷惓_@樣的運(yùn)行時(shí)異常極有可能發(fā)生在任何地方,如果直接拋出的話會(huì)讓調(diào)用者難以發(fā)現(xiàn)或者需要捕捉意外的異常從而導(dǎo)致更多的資源占用。

而且大量的非空判斷也會(huì)使代碼的效率和可讀性下降。

所以,如果想要用異常機(jī)制處理問題且不只是日志記錄的話就拋出相對(duì)具體的非運(yùn)行時(shí)異常吧,而其他的時(shí)候就拋出具體的運(yùn)行時(shí)異常(而且不能是NullPointerException,否則很難打出異常鏈)

2.try-catch的用法

try-catch的部分盡量要控制好,這個(gè)也不容易

首先,try-catch部分如果捕獲可檢查性異常要從里到外是具體異常到基類異?;蛘呤遣⒘械募?jí)別同樣大小的異常的關(guān)系

最好不要只出現(xiàn)try-catch(Exception e)或者try-catch(Throwable t)之類的或者出現(xiàn)try-catch基于空指針異常的基類或者try-catch空指針異常,否則會(huì)把意外的運(yùn)行時(shí)異常也捕獲導(dǎo)致出現(xiàn)潛在的問題

如果想catch(Exception)或者throwable的話一般catch塊只能寫日志記錄信息和返回值信息,而且這樣的話最好要用finally來(lái)釋放資源(流的關(guān)閉、鎖的解鎖、數(shù)據(jù)刷新、容器的清空等都可以在這里操作),避免資源浪費(fèi)和出現(xiàn)更大的問題。當(dāng)然,finally一定是寫這種而不能出現(xiàn)中斷類型的操作!

還有,除了圖片刷新之類,其他情況最好不要直接返回null,否則就可能發(fā)生空指針異常。

對(duì)了,能少用異常就少用異常,既能減少性能消耗還可以使代碼變得更容易看明白,差錯(cuò)也方便。而且盡可能少地出現(xiàn)大量代碼出現(xiàn)在try塊中的情況。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

Python和Java是兩種廣泛應(yīng)用于編程領(lǐng)域的高級(jí)編程語(yǔ)言,它們各有優(yōu)劣。本文從程序設(shè)計(jì)應(yīng)用、系統(tǒng)資源占用、高性能處理和語(yǔ)言特點(diǎn)等四方面詳細(xì)介紹兩種編程語(yǔ)言的區(qū)別。

關(guān)鍵字: python java 高性能處理

在這篇文章中,小編將為大家?guī)?lái)Java接口的相關(guān)報(bào)道。如果你對(duì)本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: java 接口 Interface

應(yīng)該有不少小伙伴有假期打工的經(jīng)歷,那今天就來(lái)給公眾號(hào)的讀者朋友們分享一個(gè)二哥編程星球里一個(gè)球友在富士康打工 50 天的感受,相信大家看完后會(huì)深深觸動(dòng)的。

關(guān)鍵字: 物聯(lián)網(wǎng) java 博客

在過(guò)去的幾年中,Python的普及速度令人驚嘆,Java的王者地位也常年不衰。目前兩者的競(jìng)爭(zhēng)愈發(fā)激烈,怎么選擇成為了許多初學(xué)者縈繞心中的問題,網(wǎng)上有很多版本的說(shuō)法牽引著他們的思維,讓本來(lái)很簡(jiǎn)單的問題復(fù)雜化。

關(guān)鍵字: python java

我們都知道,瀏覽一個(gè)網(wǎng)頁(yè),有兩個(gè)很主要的“電腦”在共同運(yùn)行,一臺(tái)是遠(yuǎn)程的,為你提供網(wǎng)頁(yè)數(shù)據(jù)的“服務(wù)器”,一臺(tái)是你正在使用的客戶端電腦。

關(guān)鍵字: javascript java

在各種網(wǎng)頁(yè)制作技術(shù)論壇中,常常有人詢問javascript與Java有什么區(qū)別,甚至有人誤認(rèn)為javascript就是Java。javascript與Java確實(shí)有一定的聯(lián)系,但它們并不像我們想象的那樣聯(lián)系緊密,甚至可以...

關(guān)鍵字: javascript java

對(duì)于很多初學(xué)者來(lái)講,不太清楚Java和C語(yǔ)言的區(qū)別,為了讓那個(gè)大家更清晰的了解,近日特意給大家歸納了一些兩者的大致區(qū)別,希望能夠給大家?guī)?lái)一定的幫助作用,也歡迎大家進(jìn)行詳細(xì)補(bǔ)充和歸納。

關(guān)鍵字: C語(yǔ)言 java

Java封裝案例

關(guān)鍵字: java 實(shí)例

今天我們就要來(lái)講講看似線程安全的雙重檢查鎖單例模式中可能會(huì)出現(xiàn)的指令重排問題。

關(guān)鍵字: java 單例模式 雙重檢查鎖

今天我們來(lái)放松下心情,不聊分布式,云原生,來(lái)聊一聊初學(xué)者接觸的最多的 java web 基礎(chǔ)。

關(guān)鍵字: Spring xml java
關(guān)閉