從最古老的程序設計語言開始
錯誤控制一直都是設計者們需要解決的一個大問題
由於很難設計出一套完美的錯誤控制方案
許多語言干脆將問題簡單地忽略掉
將其轉嫁給庫設計人員
對大多數錯誤控制方案來說
最主要的一個問題是它們嚴重依賴程序員的警覺性
而不是依賴語言本身的強制標准
如果程序員不夠警惕——若比較匆忙
這幾乎是肯定會發生的——程序所依賴的錯誤控制方案便會失效
違例控制
將錯誤控制方案內置到程序設計語言中
有時甚至內建到操作系統內
這裡的
違例
(Exception)屬於一個特殊的對象
它會從產生錯誤的地方
扔
或
擲
出來
隨後
這個違例會被設計用於控制特定類型錯誤的
違例控制器
捕獲
在情況變得不對勁的時候
可能有幾個違例控制器並行捕獲對應的違例對象
由於采用的是獨立的執行路徑
所以不會干擾我們的常規執行代碼
這樣便使代碼的編寫變得更加簡單
因為不必經常性強制檢查代碼
除此以外
擲
出的一個違例不同於從函數返回的錯誤值
也不同於由函數設置的一個標志
那些錯誤值或標志的作用是指示一個錯誤狀態
是可以忽略的
但違例不能被忽略
所以肯定能在某個地方得到處置
最後
利用違例能夠可靠地從一個糟糕的環境中恢復
此時一般不需要退出
我們可以采取某些處理
恢復程序的正常執行
顯然
這樣編制出來的程序顯得更加可靠
Java的違例控制機制與大多數程序設計語言都有所不同
因為在Java中
違例控制模塊是從一開始就封裝好的
所以必須使用它!如果沒有自己寫一些代碼來正確地控制違例
就會得到一條編譯期出錯提示
這樣可保證程序的連貫性
使錯誤控制變得更加容易
注意違例控制並不屬於一種面向對象的特性
盡管在面向對象的程序設計語言中
違例通常是用一個對象表示的
早在面向對象語言問世以前
違例控制就已經存在了
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25383.html