@throws в Scala не позволяет вызывать Java для перехвата правильного типа исключения

У меня есть такой код на Scala:

class Callee {
  @throws(classOf[MyCheckedException])
  def doStuff() {
  }
}

Вызов из Java вот так:

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) {

    }
  }
}

Удаление Блок catch приводит к ошибке компилятора Java, говорящей о необработанном типе исключения MyCheckedException. Добавление блока catch для MyCheckedException приводит к тому, что компилятор жалуется на то, что блок catch недоступен, поскольку исключение никогда не генерируется.

Если я поймаю Exception и сделаю instanceOf, я смогу перехватить правильное исключение, выходящее из doStuff, но я думал, что аннотация @throws должна генерировать правильный байт-код для работы правильного блока catch. Я ошибаюсь, или здесь есть ошибка?

Для справки, это касается Scala 2.9.2 и Java 1.6.

Изменить:Он отлично компилируется, вызывая javac/scalac с помощью sbt из командной строки. Ошибка проявляется только во время компиляции -, так как -вы -вводите в Eclipse, что предполагает ошибку либо в компиляторе Eclipse Java, либо в какой-то части IDE. Могут ли другие воспроизвести это таким образом? Я использую Eclipse 3.7.2

7
задан Matthew Farwell 27 April 2012 в 06:45
поделиться