第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

即使從不拋出異常,使用try-catch塊是否昂貴?

即使從不拋出異常,使用try-catch塊是否昂貴?

慕哥6287543 2019-08-06 17:09:32
即使從不拋出異常,使用try-catch塊是否昂貴?我們知道捕獲異常是昂貴的。但是,即使從未拋出異常,在Java中使用try-catch塊也是昂貴的嗎?我發(fā)現(xiàn)Stack Overflow問(wèn)題/答案為什么嘗試塊昂貴?,但它適用于.NET。
查看完整描述

3 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

try幾乎沒(méi)有任何費(fèi)用。try代碼的元數(shù)據(jù)不是在運(yùn)行時(shí)進(jìn)行設(shè)置,而是在編譯時(shí)進(jìn)行結(jié)構(gòu)化,這樣當(dāng)拋出異常時(shí),它現(xiàn)在會(huì)執(zhí)行相對(duì)昂貴的操作,即向上移動(dòng)堆棧并查看是否try存在任何可以捕獲此異常的塊例外。從外行的角度來(lái)看,try也許是免費(fèi)的。它實(shí)際上拋出了讓你付出代價(jià)的例外 - 但除非你拋出數(shù)百或數(shù)千例外,否則你仍然不會(huì)注意到成本。


try有一些與之相關(guān)的小成本。Java不能對(duì)try塊中的代碼進(jìn)行一些優(yōu)化,否則它會(huì)執(zhí)行。例如,Java通常會(huì)在方法中重新排列指令以使其運(yùn)行得更快 - 但Java還需要保證如果拋出異常,就會(huì)觀(guān)察到方法的執(zhí)行,就好像它的語(yǔ)句一樣,在源代碼中執(zhí)行,執(zhí)行按順序排隊(duì)。

因?yàn)樵谝粋€(gè)try塊中可以?huà)伋霎惓#ㄔ趖ry塊的任何一行!異步拋出一些異常,例如通過(guò)調(diào)用stop一個(gè)Thread(不推薦使用),甚至OutOfMemoryError幾乎可以在任何地方發(fā)生)然而它可以捕獲并且代碼在之后以相同的方法繼續(xù)執(zhí)行,更難以推斷可以進(jìn)行的優(yōu)化,因此它們不太可能發(fā)生。(有人必須對(duì)編譯器進(jìn)行編程才能完成它們,推理并保證正確性等等。對(duì)于那些意味著'特殊'的事情來(lái)說(shuō),這將是一件巨大的痛苦。)但是,實(shí)際上你不會(huì)注意到這樣的事情。


查看完整回答
反對(duì) 回復(fù) 2019-08-06
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

trycatch可能會(huì)對(duì)性能產(chǎn)生一些影響。這是因?yàn)樗柚笿VM進(jìn)行一些優(yōu)化。Joshua Bloch在“Effective Java”中說(shuō)過(guò)以下內(nèi)容:

?將代碼放在try-catch塊中會(huì)禁止現(xiàn)有JVM實(shí)現(xiàn)可能執(zhí)行的某些優(yōu)化。


查看完整回答
反對(duì) 回復(fù) 2019-08-06
  • 3 回答
  • 0 關(guān)注
  • 863 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)