最近在重構(gòu)代碼的時(shí)候,有些想法,記錄一下:
創(chuàng)新互聯(lián)公司專(zhuān)注于閬中企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都商城網(wǎng)站開(kāi)發(fā)。閬中網(wǎng)站建設(shè)公司,為閬中等地區(qū)提供建站服務(wù)。全流程按需定制制作,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
對(duì)于一些會(huì)拋異常的代碼進(jìn)行封裝,是應(yīng)該在封裝的方法處直接try-catch還是throw exception讓外面的調(diào)用者進(jìn)行處理?
其實(shí)catch就相當(dāng)于內(nèi)部的一個(gè)回調(diào),如果在內(nèi)部就try-catch掉了,這個(gè)回調(diào)是無(wú)法傳遞到外面的,這樣是不利于擴(kuò)展的。比如下面的代碼:
這樣系統(tǒng)就會(huì)提示在內(nèi)部IOException永遠(yuǎn)不會(huì)拋出,需要去掉try-catch模塊。但是catch里是有代碼邏輯的,所以封裝的時(shí)候不能一味地進(jìn)行try-catch以圖省事。
當(dāng)然還有一個(gè)解決辦法,就是在封裝的方法內(nèi)部的catch里再throw 異常對(duì)象。但是這樣就是重復(fù)啰嗦的。
2.throw new RuntimeException
1)在使用建造者設(shè)計(jì)模式的時(shí)候,某些屬性的建造是有先后順序或者必要性的。如果調(diào)用者沒(méi)有按照
順序建造或者建造不全,需要直接拋出異常。防止異常拖后拋出,和業(yè)務(wù)的異?;祀s在一起。