Эта концепция исключений с проверкой и без проверки не существует в .net.
Намерение оригинальных Java-гуру заключалось в том, что если вам нужно объявить проверенные исключения, которые вы выбрасываете, то вызывающий будет знать, что он / она должен их перехватить. например, если вы имеете дело с библиотекой IO, то заставляет перехватывать IOException.
try {
file.delete();
} catch (IOException x) {
// do something
}
К сожалению, проверенные исключения чрезмерно используются в Java (см. Spring философия ). Существует много критики о злоупотреблении проверенными исключениями и о том, как они загрязняют код. Библиотеки, которые чаще всего выдают проверенные исключения, заставляют пользователей писать такой код:
try {
file.delete();
} catch (IOException e) {
throw new RuntimeException(e);
}
Если вы пишете библиотеку, подумайте, будет ли ваше проверенное исключение мешать / раздражать пользователя, и будет ли он / она извлекать выгоду из необходимости его перехватывать.
Существуют разные взгляды на этот счет, но сегодня преобладает тенденция избегать проверенных исключений (см. Успешные проекты, такие как spring, hibernate, apache-commons и т. Д.).
Я могу засвидетельствовать, что сегодня я больше не выбрасываю проверенные исключения. Если действительно важно, чтобы пользователь знал об исключении, хорошо документируйте его в javadocs, но предоставьте пользователю свободу писать более понятный код.
РЕДАКТИРОВАТЬ: Я нашел похожий вопрос (и один из моих предыдущих ответов) здесь . Может быть, это поможет.