2017-10-14 38 views
0

請參考下面我的自定義異常文件(ExceptionHandler.java):我可以將多個異常類放在一個java文件中並根據需要調用它們嗎?

package utilities; 


public class ExceptionHandler { 
    public void browserException() throws BrowserException { 
     new BrowserException(); 
    } 
    public void userInputException() throws UserInputException { 
     new UserInputException(); 
    } 
    public void timeOutException() throws TimeOutException { 
     new TimeOutException(); 
    } 
    public void notFoundException() throws NotFoundException { 
    new NotFoundException(); 
    } 
} 

//////////////////// Exception List Here //////////////////// 
@SuppressWarnings("serial") 
class BrowserException extends Exception { 
    public BrowserException() { 
     System.out.println("Unhandled Browser!"); 
    } 
} 

@SuppressWarnings("serial") 
class UserInputException extends Exception { 
    public UserInputException() { 
     System.out.println("Invalid user-input!"); 
    } 
} 

@SuppressWarnings("serial") 
class TimeOutException extends Exception { 
    public TimeOutException() { 
     System.out.println("Script timed out!"); 
    } 
} 

@SuppressWarnings("serial") 
class NotFoundException extends Exception { 
    public NotFoundException() { 
     System.out.println("Element Not Found!"); 
    } 
} 

我試圖把這種的ExceptionHandler類如圖所示,下面,但得到錯誤,如「類型爲void無異常可能拋出;異常類型必須是Throwable的子類「。

throw new ExceptionHandler().browserException(); 

請別人讓我知道,如果它是一種有效的方式。如果不是的話,那麼組合多個自定義異常類的最好方法是什麼?由於我是異常處理的新手,請耐心等待。

非常感謝!

+0

您應該返回'新BrowserException',而不是扔在方法'browserException()'爲您的使用。或者在方法中拋出異常,並改變爲'new ExceptionHandler()。browserException()'不帶'throw'。 –

回答

0

你應該叫

拋出新BrowserException

+0

是的!它在拋出BrowserException後工作。 – abhi17

+0

另一個問題。我應該在這種情況下使用哪個導入語句?... (a)import utilities.ExceptionHandler; OR (b)import utilities.BrowserException; 請注意 - 「ExceptionHandler」是公共類,「BrowserException」是非公共類。 – abhi17

+0

另外還有需要在ExceptionHandler類中保留方法browserException(),userInputException(),timeOutException(),notFoundException()嗎?我不覺得他們有價值了。 – abhi17

相關問題