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. 程序的調試
程序中的錯誤
程序中的錯誤通??梢苑殖扇箢?br /> 語法錯誤(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 产