Como definir a classe de exceção personalizada em Java, a maneira mais fácil?
I'estou tentando definir minha própria classe de exceção da maneira mais fácil, e isto é o que eu'estou conseguindo:
public class MyException extends Exception {}
public class Foo {
public bar() throws MyException {
throw new MyException("try again please");
}
}
Isto é o que diz o compilador Java:
cannot find symbol: constructor MyException(java.lang.String)
Eu tinha a sensação de que este construtor tem que ser herdado de java.lang.Exception
, não é't it?
280
7
Não, você não't "inherit" construtores não faltosos, você precisa definir aquele que toma uma String na sua classe. Tipicamente você utiliza
super(message)
no seu construtor para invocar o seu construtor pai. Por exemplo, como este:Uma típica exceção personalizada I'd definir é algo parecido com isto:
Eu até crio um template usando o Eclipse para não'não ter que escrever tudo uma e outra vez.
Se você utilizar o novo diálogo de classe no Eclipse você pode apenas definir o campo Superclass para `java.lang.Exception' e verificar "Construtores de superclass" e ele irá gerar o seguinte:
Em resposta à pergunta abaixo sobre não chamar
super()
no construtor defunto, a Oracle tem isto para dizer:A razão disto é explicada no artigo [**Inheritance***][1] da Plataforma Java que diz:
[1]: http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
A classe de exceção tem dois construtores
public Exception()
-- Constrói uma exceção com uma mensagem de erro especificada. Uma mensagem detalhada é uma String que descreve a condição de erro para esta exceção em particular.Se você herdar da Exceção, você tem que fornecer um construtor que toma uma String como parâmetro (ele irá conter a mensagem de erro).