拋異常相信大家都會吧?只需要這樣就可以了:
throw new RuntimeException("didispace.com");
但是,在開發過程中有一些情況,我們需要測試程式對異常的處理邏輯是否正確,這個時候就需要我們在程式執行時主動的丟擲異常才會觸發相關邏輯來驗證正確性,比較常見的場景有:事務是否會回滾、Web層的統一異常處理等等。
這個時候,你是如何去製造異常,來支援你的除錯呢?
下面我就以前寫的Spring Boot教程裡一個事務處理的例子為場景,給大家看看一些常見的除錯操作以及今天要講的更優雅的操作。
案例說明
先介紹下場景,這是一個用Spring Data JPA實現的資料庫操作案例,右側UserService
裡一個事務操作,裡面含有5句User表的插入語句。
因為@Transactional
註解存在,所以saveSomeUsers
函式下的資料插入要麼都成功,要麼都失敗。成功很好測試,要測試失敗的話,則需要我們讓這個函式丟擲異常才能觸發回滾操作。
擼起袖子就是拋
為了丟擲異常以驗證事務是否能回滾,很多小夥伴是這樣乾的:
直接在這個函式裡手工丟擲異常,很粗暴很直接,是可以完成目標。雖然這種方法在單元測試中作為一種場景是可以的,但如果在複雜的業務過程中這樣做就不那麼優雅了,因為你測試好還要刪掉它,如果忘記了,那就是直接寫了個Bug。
優雅地拋異常
實際上IDEA提供了自由拋異常的功能,只需要在Debug的時候,右鍵前幾天介紹的回退操作Reset Frame位置,就可以看到如下圖箭頭所標的Throw Exception
操作了。
然後在彈出框中,你就可以編寫你想要丟擲的異常了:
是不是很簡單呢?趕緊開啟IDEA試一試吧!這裡視訊教程也同步更新了,點選就可以檢視,我正在連載IDEA專題的視訊內容,感興趣的小夥伴可以關注我喲!
歡迎關注我的公眾號:程式猿DD。第一時間瞭解前沿行業訊息、分享深度技術乾貨、獲取優質學習資源