2017-10-14 93 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

相关问题