Просто используйте это для немного большего пространства, но пока нет ответа. Я могу получить следующие (минимальные) настройки для работы:
Dao.java
public interface Dao { void save(Object obj) throws DataIntegrityException; }
DataIntegrityException.java
public class DataIntegrityException extends RuntimeException {
public DataIntegrityException(String str) { super(str); }
}
Test.java
public class Test {
public void doIt(Dao dao) {
try {
dao.save(new Object());
} catch (DataIntegrityException e) {
System.out.println("Caught DataIntegrityException")
}
}
}
test_case.groovy
d = [save: { throw new DataIntegrityException('duplicate') }] as Dao
new Test().doIt(d)
Это работает, т. Е. Выводит «Caught DataIntegrityException» на консоль, используя Java 6 и Groovy 1.8 (это то, что у меня есть на моей машине. По крайней мере, проблема должна лежать где-то за пределами кода, который вы '' Мы разместили здесь.
Лично я думаю, вам понадобится пошаговая отладка. Представляется вероятным, что исключение выдается из другого места в коде (возможно, из того, что содержится в эллипсах в вашей версии до throw new DataIntegrityException()
).