Я знаю правила об отмеченных исключениях, но я не могу полностью решить эту проблему. Почему второй метод не компилируется, но первый делает? Ошибка - это «Необработанное исключение типа Exception» в последнем типе. Я могу понять, почему я получаю эту ошибку, но я не понимаю, почему первый метод в порядке, у него должна быть такая же проблема ?!Java 7 Проверенные правила исключений
Как eclipse, так и intellij показывают ту же ошибку.
import java.util.concurrent.Callable;
public class ThrowableWeirdness {
public void doWithMetrics(String name, Runnable runnable) {
try {
runnable.run();
} catch (Throwable e) {
System.out.printf(name + ".failed");
throw e;
}
}
public <RET> RET doWithMetrics(String name, Callable<RET> runnable) {
try {
return runnable.call();
} catch (Throwable e) {
System.out.printf(name + ".failed");
throw e; // Compilation error on this line: unhandled exception
}
}
}
Не могли бы вы объяснить разницу между этими двумя методами?
Первый метод не скомпилирован ни на моем Eclipse ... Вы уверены, что не забыли некоторые «throws Throwable» в ваших подписях методов? – sp00m
yep, такой же здесь, оба метода выдают неполученную ошибку исключения. –
Странно. Я использую java 7, возможно, это имеет значение. Первый метод определяет компиляции, а также работает! –