Tengo algo de código Scala como esto:@throws en Scala no permite llamar a Java para atrapar la excepción del tipo correcto
class Callee {
@throws(classOf[MyCheckedException])
def doStuff() {
}
}
Llamarlo desde Java, así:
public class Caller {
public static void main(String[] args) {
// this won't compile; the Java compiler complains that the catch block is unreachable
// however without the catch block, it complains "unhandled exception MyCheckedException"
try {
new Callee().doStuff();
}
catch (MyCheckedException e) {
}
}
}
Extracción del bloque catch da como resultado un error del compilador de Java que dice 'excepción no controlada tipo MyCheckedException'. Al agregar el bloque catch para MyCheckedException, el compilador se queja de que el bloque catch no está disponible, porque la excepción nunca se lanza.
Si capturo Exception y hago un instanceOf, puedo interceptar la excepción correcta que sale de doStuff, pero pensé que se suponía que la anotación @throws generaba el bytecode correcto para que funcione el bloque catch adecuado. ¿Estoy equivocado, o hay un error aquí?
Para el registro, esto es con Scala 2.9.2 y Java 1.6.
Edit: Compila bien invocando javac/scalac utilizando sbt desde la línea de comandos. El error solo aparece durante la compilación tal como se escribe en Eclipse, que sugiere que el error está en el compilador Eclipse Java o en alguna parte del IDE. ¿Pueden otros reproducirlo de esta manera? Estoy usando Eclipse 3.7.2
ayuda que le ayudemos, muestran un cierto código –
No se puede reproducir, puede ofrecerle un ejemplo completo? – axtavt
Las clases completas ahora se incluyen más arriba –