Исключения представляют условия ошибки.Когда возникает ошибка, некоторый метод в цепочке вызовов знает , как обрабатывать эту ошибку в контексте приложения , т. Е. Что делать - игнорировать, повторять, прерывать и т. Д. Еслиэто этот метод, который знает, как обрабатывать это исключение, тогда вы обрабатываете его здесь.Если нет, вы бросаете его так, чтобы метод на один уровень вверх по цепочке вызовов принимал его и воздействовал на него.
Иногда вам может потребоваться выполнить как (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);
}
}
В обоих случаях это не тот метод, который полностью обрабатывает исключение и выполняет только некоторую обработку по пути , поскольку исключение просачивается наверх.