Исключения представляют собой условия ошибки. Когда возникает условие ошибки, какой-либо метод в цепочке вызовов знает как обрабатывать эту ошибку в контексте приложения т.е. что делать - игнорировать, повторять, прерывать и т. Д. Если это , то метод, который знает как справиться с этим исключением, тогда вы обрабатываете его здесь. Если нет, вы бросаете его так, чтобы метод на один уровень вызывал цепочку, и он принимал его.
Иногда вы можете делать как (1), так и (2). Вы можете обработать исключение, выполнить некоторую промежуточную обработку, а затем восстановить ее.
public void func() throws XXXException {
try {
......
} catch(XXXException ex) {
logger.log(ex);
throw ex;
}
}
Или вы можете поймать одно исключение и бросить другой, например, когда вы хотите, чтобы обернуть исключение третьей стороной в исключение приложения.
public void func() throws YYYException {
try {
......
} catch(XXXException ex) {
throw new YYYException(ex);
}
}
В обоих случаях, это не метод, который полностью обрабатывает исключение и только делает некоторую обработку по пути как исключение просачивается к вершине.
'} catch (ThisQuestionMustHaveBeenAskedBeforeException e) {searchForExamples();}' – akf