課程
/后端開發
/Java
/Java高并發秒殺API之Service層
如下圖,為什么要在try和catch里面拋出兩次異常?紅框中的throw是不是可以去掉
2017-11-03
源自:Java高并發秒殺API之Service層 1-4
正在回答
老師對于異常處理有以下三步:
1.try catch 將所有的已知的未知的異常全部捕獲到后在最后一個catch里,處理轉變為spring認識的運行期異常再在方法里拋出,這樣spring才會進行事務回滾
2.由于所有異常都被最后一個catch轉化為同一種異常:SeckillException,這樣就難以區分到底是哪些業務異常,所以在最后一個catch前加了兩個catch把相對應的每一種異常提前拋出
對于你的問題,如果把前兩個catch都去掉,那么前面跑出的異常都會被最后一個catch捕獲,進而轉化為SeckillException,就不能體現到底具體是哪一種子異常了
knyel 提問者
我也覺得沒有必要,既然方法上已經向上拋出了,那就不應該對異常再在方法里做處理了,在方法里直接拋出即可。感覺這塊寫的有點亂。
throw e1:拋出的SeckillCloseException,這是沒有更新到記錄,秒殺結束的異常。
throw e2:拋出的RepeatKillException,這是重復秒殺的異常
這里拋出的兩次異常,都是對應不同的處理。
舉報
Java實現高并發秒殺API,介紹秒殺業務Service層的設計和實現
3 回答try-catch怎樣寫可以讓spring認為拋出的異常是運行時異常,從而執行事務操作??
1 回答拋出異常問題,為什么是父類異常寫在前面,這樣不就會屏蔽后面的子類異常了嗎?
2 回答拋出異常Injection of autowired dependencies failed;
1 回答拋出異常在實際開發中的使用場景
1 回答executeSeckill方法為什么一定要用異常?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-02-07
老師對于異常處理有以下三步:
1.try catch 將所有的已知的未知的異常全部捕獲到后在最后一個catch里,處理轉變為spring認識的運行期異常再在方法里拋出,這樣spring才會進行事務回滾
2.由于所有異常都被最后一個catch轉化為同一種異常:SeckillException,這樣就難以區分到底是哪些業務異常,所以在最后一個catch前加了兩個catch把相對應的每一種異常提前拋出
對于你的問題,如果把前兩個catch都去掉,那么前面跑出的異常都會被最后一個catch捕獲,進而轉化為SeckillException,就不能體現到底具體是哪一種子異常了
2018-01-17
我也覺得沒有必要,既然方法上已經向上拋出了,那就不應該對異常再在方法里做處理了,在方法里直接拋出即可。感覺這塊寫的有點亂。
2017-11-04
throw e1:拋出的SeckillCloseException,這是沒有更新到記錄,秒殺結束的異常。
throw e2:拋出的RepeatKillException,這是重復秒殺的異常
這里拋出的兩次異常,都是對應不同的處理。