java异常及错误处理大纲
文章目錄
- 1.異常處理
- 2. 自定義異常
- 3. 斷言及程序的測試
- 4. 程序的調試
1.異常處理
異常(exception ) 又稱為例外、差錯、違例
對應著Java運行錯誤處理機制
基本寫法
傳統的 語言如何處理
在一些傳統的語言(如C語言中)
if語句來判斷是否出現了例外
全程變量ErrNo
但這有幾個缺點
正常處理與異常處理的代碼同樣處理
可讀性(readability)差
每次調用一個方法時都進行錯誤檢查
? 可維護性( maintainability )差
? 錯誤由誰處理不請
? 職責不清
Java中處理異常
拋出(throw)異常
運行時系統在調用棧中查找
? 從生成異常的方法開始進行回溯,直到找到:
? 捕獲(catch) 異常的代碼
?
相關的語句
拋出異常
throw 異常對象;
捕獲異常
try{ 語句組}catch(異常類名 異常形式參數名){ 異常處理語句組;}catch(異常類名 異常形式參數名){ 異常處理語句組; }finally{ 異常處理語句組; }其中,catch語句可以0至多個,可以沒有finally語句
異常的分類
Throwable (可拋出)
Error: JVM的錯誤
Exception: 異常
一般所說的異常
是指Exception及其子類
Exception類
構造方法
public Exception();
public Exception(String message);
Exception(String message, Throwable cause) ;
? 方法
? getMessage()
? getCause()
? printStackTrace()
?
多異常的處理
子類異常要排在父類異常的前面
finally語句
無論是否有異常都要執行
即使其中有break,return等語句
在編譯時,finally部分代碼生成了多遍
Exception分兩種
RuntimeException及其子類,可以不明確處理
否則,稱為受檢的異常(checked Exception)
受檢的異常,要求明確進行語法處理
要么捕(catch)
要么拋(throws):在方法的簽名后面用throws xxxx來聲明
在子類中,如果要覆蓋父類的一個方法,若父類中的方法聲明了 throws異常,則子類的方法也可以throws異常
可以拋出子類異常(更具體的異常),但不能拋出更一般的異常
?
try…with…resource
try(類型 變量名 = new 類型() ){
。。。
}
自動添加了finally{ 變量.close(); }
不論是否出現異常,都會執行
2. 自定義異常
創建用戶自定義異常類
創建用戶自定義異常時
(1) 繼承自Exception類或某個子Exception類
(2) 定義屬性和方法,或重載父類的方法
重拋異常及異常鏈接
對于異常,不僅要進行捕獲處理,有時候還需要將此異常進一步傳遞給調用者,以 便讓調用者也能感受到這種異常。這時可以在catch語句塊或finally語句塊中采取 以下三種方式:
(1)將當前捕獲的異常再次拋出:
throw e;
(2)重新生成一個異常,并拋出,如:
throw new Exception(“some message”);
(3)重新生成并拋出一個新異常,該異常中包含了當前異常的信息,如:
throw new Exception(“some message”,e);
可用e.getCause() 來得到內部異常
3. 斷言及程序的測試
斷言(assertion)
assert的格式是:
assert 表達式; (邏輯表達式)
assert 表達式 : 信息;
在調試程序時
如果表達式不為true,則程序會產生異常,并輸出相關的錯誤信息
Assert 的編譯及運行
編譯
只有在JDK1.4及以上的版本中才可以使用斷言。
具體地說,在早期的JDK版本(1.4)中編譯時,要通過-source選項來指明版本,如:
javac -deprecation -source 1.4 -classpath . Assertion.java
運行
在運行時,要使assert起作用,則在java命令中,使用選項(-ea,即-enableassertions)。如:
java -ea -classpath . Assertion
程序的測試及 JUnit
程序的修改是經常要進行的過程,必須保證程序在修改后其結果仍然 是正確的。
在編寫程序代碼的同時,還編寫測試代碼來判斷這些程序是否正確。
這個過程稱為“測試驅動”的開發過程。
從而保證了代碼的質量,減少了后期的查錯與調試的時間,所以實際 上它提高了程序的開發效率。
JUnit
在Java的測試過程,經常使用JUnit框架
參見http://www.junit.org。
現在大多數Java集成開發工具都提供了對JUnit的支持。
在Eclipse中
項目右鍵—New— Junit Test Case
項目右鍵—Run as — Junit Test
測試通過則為綠色,不通過顯示紅色
在NetBeans中
項目右鍵—新建— Junit測試
運行—測試,或者直接按Alt+F6即可
測試函數
@Test來標注測試函數
在測試中常用的語句如下:
fail( 信息 ); //表示程序出錯
assertEqauls(參數1,參數2 ); //表示程序要保證兩個參數要相等
assertNull(參數); //表示參數要為null
4. 程序的調試
程序中的錯誤
程序中的錯誤通常可以分成三大類
語法錯誤(Syntax error)
編輯、編譯器發現
運行錯誤(Runtime error)
異常處理機制
邏輯錯誤(Logic error)
調試(debug) 、單元測試(unit test)
程序的調試(debug)
在IDE中,項目上點右鍵 ,debug as…
進入到調試視圖(debug perspective)
調試的三種手段
斷點 (breakpoint)
跟蹤 (trace)
監視 (watch)
斷點
切換斷點(toggle breakpoint )
用鼠標單擊(或右擊)編輯器左邊條
或者
Eclipse Ctrl+Shift+B
NetBeans Ctrl+F8
跟蹤
| 逐語句執行 | F5 | F7 |
| 逐過程執行 | F6 | F8 |
| 跳出函數 | F7 | Ctrl+F7 |
| 運行到光標處 | Ctrl+R | F4 |
監視
即時監視
鼠標指向變量
快速監視
點右鍵,Inspector
添加監視
點右鍵,Watch
還可以看:調用堆棧等等
總結
以上是生活随笔為你收集整理的java异常及错误处理大纲的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax搜索思路,jquery创建一个a
- 下一篇: 30岁软件测试转产品_SENSORO 产