2011-07-17 6 views
20

tengo una clase de excepción personalizada como la siguiente:llamada Súper Constructor

case class CustomException(errorMsg:String) extends Exception(error:String) 

Todo lo que necesito que cuando cojo excepción es para tirar mi excepción personalizada y pasar mi mensaje de error a la excepción personalizada. Espero que el constructor CustomException llame a super (errMsg) Sin embargo, esto no es lo que sucede ahora y recibí un error de compilación.

catch { 
     case s: Exception => throw CustomException("This is a custom message") 
    } 

¿Cómo podría llamar a los super constructor:

super(errorMessage) 

Respuesta

34
case class CustomException(errorMsg:String) extends Exception(errorMsg) 
+0

Thx. Sin embargo, tengo curiosidad por saber por qué Scala no tiene super (errorMsg) como Java. – Echo

+16

@Echo: Porque no es Java, y como un superconstructor solo * puede * ser llamado desde el constructor primario de una clase, e incluso entonces, solo puede llamarse como la primera operación en un constructor. La sintaxis de Scala representa mejor esta restricción subyacente (impuesta por la JVM) –

+0

¿Qué sucede si desea que ambos constructores de excepciones (cadena, arrojable) y (cadena) se implementen en su excepción personalizada? – monzonj

7
case class CustomException(errorMsg:String) extends Exception(errorMsg) 

Estás llamar al constructor de la superclase, pero el argumento está de paso (error) no está obligado a cualquier cosa.

Cuestiones relacionadas