摘要:當創(chuàng)建一個異常時,需要收集一個棧跟蹤,這個棧跟蹤用于描述異常是在何處創(chuàng)建的。招致性能損失的并不是操作盡管在沒有預先創(chuàng)建異常的情況下就拋出異常是有點不尋常。異常是為異常的情況而設計的,使用時也應該牢記這一原則。
當創(chuàng)建一個異常時,需要收集一個棧跟蹤(stack track),這個棧跟蹤用于描述異常是在何處創(chuàng)建的。構建這些棧跟蹤時需要為運行時棧做一份快照,正是這一部分開銷很大。
當需要創(chuàng)建一個 Exception 時,JVM 不得不說:先別動,我想就您現(xiàn)在的樣子存一份快照,所以暫時停止入棧和出棧操作。棧跟蹤不只包含運行時棧中的一兩個元素,而是包含這個棧中的每一個元素。
如果您創(chuàng)建一個 Exception ,就得付出代價,好在捕獲異常開銷不大,因此可以使用 try-catch 將核心內容包起來。從技術上講,你甚至可以隨意地拋出異常,而不用花費很大的代價。
招致性能損失的并不是 throw 操作——盡管在沒有預先創(chuàng)建異常的情況下就拋出異常是有點不尋常。真正要花代價的是創(chuàng)建異常,幸運的是,好的編程習慣已教會我們,不應該不管三七二十一就拋出異常。異常是為異常的情況而設計的,使用時也應該牢記這一原則。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74781.html
摘要:本章中的大部分內容適用于構造函數和方法。第項其他方法優(yōu)先于序列化第項謹慎地實現(xiàn)接口第項考慮使用自定義的序列化形式第項保護性地編寫方法第項對于實例控制,枚舉類型優(yōu)先于第項考慮用序列化代理代替序列化實例附錄與第版中項目的對應關系參考文獻 effective-java-third-edition 介紹 Effective Java 第三版全文翻譯,純屬個人業(yè)余翻譯,不合理的地方,望指正,感激...
摘要:推薦序前言致謝第一章引言第二章創(chuàng)建和銷毀對象第項用靜態(tài)工廠方法代替構造器第項遇到多個構造器參數時要考慮使用構建器第項用私有構造器或者枚舉類型強化屬性第項通過私有構造器強化不可實例化的能力第項優(yōu)先考慮依賴注入來引用資源第項避免創(chuàng)建不必要的對象 推薦序 前言 致謝 第一章 引言 第二章 創(chuàng)建和銷毀對象 第1項:用靜態(tài)工廠方法代替構造器 第2項:遇到多個構造器參數時要考慮使用構建器 第...
摘要:代碼優(yōu)化的最重要的作用應該是避免未知的錯誤。此舉能夠使性能平均提高。拋出異常首先要創(chuàng)建一個新的對象,接口的構造函數調用名為的本地同步方法,方法檢查堆棧,收集調用跟蹤信息。異常只能用于錯誤處理,不應該用來控制程序流程。 showImg(https://segmentfault.com/img/remote/1460000015379073); 代碼優(yōu)化的最重要的作用應該是:避免未知的錯誤...
摘要:此舉能夠使性能平均提高。盡可能使用局部變量調用方法時傳遞的參數以及在調用中創(chuàng)建的臨時變量都保存在棧中速度較快,其他變量,如靜態(tài)變量實例變量等,都在堆中創(chuàng)建,速度較慢。 showImg(https://segmentfault.com/img/bVbsIIl?w=900&h=383);本文來源 |?http://atjf.top/3WLPmG 作者 | 萌小Q 01前沿 代碼優(yōu)化 ,一個...
摘要:捕獲不到異步錯誤嘗試對異步方法進行操作只能捕獲當次事件循環(huán)內的異常,對執(zhí)行時拋出的異常將無能為力。這里并不能捕獲回調里面拋出的異常異步情況想捕獲異常,建議在異步函數里包一層。前端可以用在上傳圖片使用別人的庫報錯同步調接口等地方適用。 前言 自從ECMA-262第3版引入了try catch語句,作為JavaScript中處理異常的一種標準方式。基本的語法如下所示。 一、try catc...
閱讀 2078·2021-10-08 10:21
閱讀 2471·2021-09-29 09:34
閱讀 3494·2021-09-22 15:51
閱讀 4926·2021-09-22 15:46
閱讀 2314·2021-08-09 13:42
閱讀 3434·2019-08-30 15:52
閱讀 2723·2019-08-29 17:13
閱讀 1555·2019-08-29 11:30