JSP.10.1.3 TryCatchFinally
Синтаксис
public interface TryCatchFinally
Описание
Интерфейс, в дополнение к Tag, IterationTag или BodyTag, для обработчика тэга, которому нужны дополнительные возможности для обслуживания ресурсов. Этот интерфейс предоставляет два новых метода: doCatch(Throwable) и doFinally().
Прототип вызова таков:
h = get a Tag(); // получает обработчика тэга, возможно из пула
h.setPageContext(pc); // инициализируется
h.setParent(null);
h.setFoo(“foo”);
// протокол вызова тэга; см. Tag.java
try {
doStartTag()...
....
doEndTag()...
}catch (Throwable t){
// реагирует на условие исключения
h.doCatch(t);
} finally {
// восстанавливает инварианты данных и освобождает вызванные ресурсы
h.doFinally();
}
... другие вызовы, возможно, с новыми setter'ами
...
h.release(); // освобождает долгосрочные ресурсы
JSP.10.1.3.5 Методы
public void doCatch(java.lang.Throwable t)
Вызывается, если возникает Throwable при обсчёте BODY внутри тэга, или любым из следующих методов: Tag.doStartTag(), Tag.doEndTag(), Iteration-Tag.doAfterBody() и BodyTag.doInitBody().
Этот метод вызывается, если Throwable возникает в одном из setter-методов.
Этот метод может вызывать исключение (то же самое или новое), которое будет затем помещено во вложенную цепь. Если исключение возникает, будет вызван doFinally().
Этот метод предназначен для использования в ответ на исключительное условие.
Параметры:
t - Навигация вызываемого исключения по этому тэгу.
Вызывает: Throwable
public void doFinally()
Вызывается во всех случаях после doEndTag() для всех классов, реализующих Tag, IterationTag или BodyTag. Этот метод вызывается, даже если в BODY тэга возникло исключение, или в любом из следующих методов:
Tag.doStartTag(), Tag.doEndTag(), IterationTag.doAfterBody() и Body-Tag.doInitBody().
Этот метод не вызывается, если Throwable возникает в одном из setter-методов.
Этот метод не должен вызывать Exception.
Этот метод предназначен для обслуживания целостности данных при вызове и акций обслуживания ресурсов.