亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么要在try和catch里面拋出兩次異常?

如下圖,為什么要在try和catch里面拋出兩次異常?紅框中的throw是不是可以去掉

http://img1.sycdn.imooc.com//59fc36800001216207540399.jpg

正在回答

3 回答

老師對于異常處理有以下三步:

1.try catch 將所有的已知的未知的異常全部捕獲到后在最后一個catch里,處理轉變為spring認識的運行期異常再在方法里拋出,這樣spring才會進行事務回滾

2.由于所有異常都被最后一個catch轉化為同一種異常:SeckillException,這樣就難以區分到底是哪些業務異常,所以在最后一個catch前加了兩個catch把相對應的每一種異常提前拋出

對于你的問題,如果把前兩個catch都去掉,那么前面跑出的異常都會被最后一個catch捕獲,進而轉化為SeckillException,就不能體現到底具體是哪一種子異常了


2 回復 有任何疑惑可以回復我~
#1

knyel 提問者

非常感謝!
2018-02-07 回復 有任何疑惑可以回復我~

我也覺得沒有必要,既然方法上已經向上拋出了,那就不應該對異常再在方法里做處理了,在方法里直接拋出即可。感覺這塊寫的有點亂。

0 回復 有任何疑惑可以回復我~

throw e1:拋出的SeckillCloseException,這是沒有更新到記錄,秒殺結束的異常。

throw e2:拋出的RepeatKillException,這是重復秒殺的異常

這里拋出的兩次異常,都是對應不同的處理。

0 回復 有任何疑惑可以回復我~
#1

knyel 提問者

不好意思,我沒說清楚,我的意思是try里面已經拋出了一個異常,為什么throw里面又拋出了一次
2017-11-04 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么要在try和catch里面拋出兩次異常?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號