入門 硬件知識 電腦基礎 上網入門 故障 電腦修護 電腦健康 精通電腦 網站 DIV+CSS 建站知識 SEO知識
教程 電腦操作 平面設計 路由設置 技巧 Word Excel QQ技巧 壁紙 自然風景 酷車美女 系統桌面
系統 安裝系統 系統技巧 系統設置 安全 木馬查殺 黑客防御 安全資訊 美女 明星寫真 清純美女 性感美女

主頁 > 電腦編程 > INTRODUCE

Java中throw自己的error的好處

發布時間:2013-04-07 作者:電腦知識網 來源:www.mhpqri.live 字號:
        以前,我覺得編程語言中最讓人不解的部分就是它能夠創建錯誤。當時我對Java語言中的throw關鍵字的第一反應就是“啊,這也太傻了,為什么我們想要引發一個錯誤(error)?”我覺得錯誤是我的敵人,應當避免的,所以創建錯誤是毫無用處甚至是危險的。我認為在JavaScript中加入這樣的關鍵字是多此一舉。但隨著我編程經驗的豐富,我逐漸變成了throw我的error粉絲。合理的使用它們會讓對代碼的調試和維護大大簡化。

        在編程的時候,Error通常出現在不期望的事情發生時。可能是傳入函數的參數值不正確,或者是運算符的操作數不合法。為此編程語言定義了一個基本的規則:當上述情況發生時,就產生一個錯誤來讓編程人員對代碼進行修復。如果這些錯誤不被拋出或反饋給你,那么調試程序幾乎是不可能的。如果所有的錯誤都“悄悄地”發生,那么你很難在第一時間發現問題所在,并將其修復。因此Error是開發者的朋友,而不是敵人。

        Error的問題所在是它們會在錯誤的時間和錯誤的地點發生。更糟的是,默認的錯誤信息通常晦澀難懂,很難解釋哪里出了問題。JavaScirpt的錯誤信息更是不包含任何有價值的信息,而且還很隱蔽(尤其是在IE里運行時)。想象一下如果能有這樣的錯誤提示出現“因為某件事情發生導致某個函數調用失敗”,那么立刻我們的調試任務就變得簡單了,這就是throw自己的error的好處。

        我們可以把error想象成內嵌的異常類。在代碼的某個特定的地點估計異常的發生肯定要比在所有的地方等待異常的發生要簡單。這不光在代碼編寫中,在產品設計中也是一個普遍認同的原則。就像在轎車上設計了擠壓區域和框架,以便在受到撞擊時會以期望的方式發生變形。因為知道了框架在受到撞擊時會如何變形,哪些零件會失效,這樣制造商就可以造出保證乘客安全的汽車。我們的代碼也可以按照這樣的思想編寫。

        雖然最近幾年JavaScript有了很多進步,但是相比于其它語言的開發者,JavaScript開發者仍然只有少得可憐的調試工具。因此在JavaScript中throw error就顯得比其它語言更有價值。我們可以用throw關鍵字來拋出一個對象。我們可以拋出任何類型的對象,不過Error對象是最常用的:

throw new Error("Something bad happened.")

        當我們用這樣的方式拋出錯誤,而這個錯誤又不被try-catch捕獲時,瀏覽器就會用其通常的方式顯示上面的錯誤信息(Something bad happened)。在IE里會在瀏覽器的左下角出現一個小圖標,當雙擊圖標時會彈出一個帶著上面錯誤提示的對話框;安裝有Firebug插件的火狐瀏覽器會在控制臺顯示錯誤信息;Safar和Chrome會在Web Inspector中顯示;Opera會在錯誤控制臺顯示。一句話,它們會像你沒有拋出錯誤時一樣處理。但不同的是它會通過瀏覽器向你提供具體的信息,而不是一個發生錯誤的行列號。你可以為錯誤信息加入任何需要的信息,來幫你成功解決問題。我建議在錯誤信息中提供發生錯誤的函數名稱以及錯誤原因。看下面這個函數:

function addClass(element, className){
        element.className += " " + className;
}

        這個函數的功能是向一個給定的element加入新的CSS class(這在JavaScript中非常普遍)。但如果element是null的時候會發生什么?你會得到一個這樣的錯誤提示“object expected”,很隱晦。然后你需要查看執行堆棧(如果瀏覽器支持這個功能)來準確定位錯誤的源頭。如果我們拋出一個錯誤調試就變得簡單了:

function addClass(element, className){
       if (element != null && typeof element.className == "string"){
        element.className += " " + className;
        } else {
        throw new Error("addClass(): First arg must be a DOM element.");
        }
}

 


文章: Java中throw自己的error的好處
地址:http://www.mhpqri.live/pcbc/201304/2813.html
------分隔線----------------------------
------分隔線----------------------------
欄目分類
熱門電腦編程文章推薦
吉祥招财猫电子游戏 秒秒彩下载-android版 天津时时彩 成都沐足店承包转让 麻将来了安卓版下载 哪种赛车速度最快 日本卡通黄色片 排列三组3组6什么意思 炒股课程视频百度云盘 无押金一元微信麻将群 股利多配资 东莞按摩qq群 北京十一选五最新开 配资平台哪个好推荐股牛网 迅篮球比分直播 山东十一选五前三走 球探体育比分网手机版