可以說,如果條件爲真,我有一個if語句塊會引發異常。我如何創建一個使用這些相同條件的方法,但返回true或false而不是拋出異常。即,如果拋出異常,則返回false;如果沒有拋出異常,則返回true。我想盡可能多地重用代碼。如何重用異常拋出代碼來返回一個布爾值?
我也想盡量避免簡單地捕捉我拋出的所有異常。
編輯:對不起錯別字
可以說,如果條件爲真,我有一個if語句塊會引發異常。我如何創建一個使用這些相同條件的方法,但返回true或false而不是拋出異常。即,如果拋出異常,則返回false;如果沒有拋出異常,則返回true。我想盡可能多地重用代碼。如何重用異常拋出代碼來返回一個布爾值?
我也想盡量避免簡單地捕捉我拋出的所有異常。
編輯:對不起錯別字
移動代碼到返回布爾函數,然後改變原有的功能調用新的一個,如果它返回false
拋出異常。
這聽起來像不止一種異常類型。 – 2010-12-14 02:10:14
@Aaron:然後你可以創建一個'boolean shouldThrow'參數。 – SLaks 2010-12-14 02:20:23
如果出現不良情況(可能是返回false的函數),是否有公共代碼接受將被調用的委託。然後:
if (SomethingBadHappened) return ReportSomethingBad(new ImNotFeelingWellException("I'm not feeling too well..."));
的「TryDoingSomething」版本的程序(這應該返回false,而不是拋出一個異常)的調用應該與什麼也不做委託常見的版本,但返回false。 「DoSomethingAndThrowExceptionIfItFails」版本應該用一個會拋出傳入異常的委託來調用公共例程。
這樣做會允許異常包含更多有用的信息,如果它們僅由返回false的TryDoingSomething()例程生成的話。
「扔布爾」,是吧? :)但嚴重的是,在創建相應方法時遇到的問題究竟是什麼? – BalusC 2010-12-14 01:57:24