2010-12-14 28 views
0

可以說,如果條件爲真,我有一個if語句塊會引發異常。我如何創建一個使用這些相同條件的方法,但返回true或false而不是拋出異常。即,如果拋出異常,則返回false;如果沒有拋出異常,則返回true。我想盡可能多地重用代碼。如何重用異常拋出代碼來返回一個布爾值?

我也想盡量避免簡單地捕捉我拋出的所有異常。

編輯:對不起錯別字

+0

「扔布爾」,是吧? :)但嚴重的是,在創建相應方法時遇到的問題究竟是什麼? – BalusC 2010-12-14 01:57:24

回答

2

移動代碼到返回布爾函數,然後改變原有的功能調用新的一個,如果它返回false拋出異常。

+0

這聽起來像不止一種異常類型。 – 2010-12-14 02:10:14

+0

@Aaron:然後你可以創建一個'boolean shouldThrow'參數。 – SLaks 2010-12-14 02:20:23

0

如果出現不良情況(可能是返回false的函數),是否有公共代碼接受將被調用的委託。然後:

 
    if (SomethingBadHappened) 
    return ReportSomethingBad(new ImNotFeelingWellException("I'm not feeling too well...")); 

的「TryDoingSomething」版本的程序(這應該返回false,而不是拋出一個異常)的調用應該與什麼也不做委託常見的版本,但返回false。 「DoSomethingAndThrowExceptionIfItFails」版本應該用一個會拋出傳入異常的委託來調用公共例程。

這樣做會允許異常包含更多有用的信息,如果它們僅由返回false的TryDoingSomething()例程生成的話。

相關問題