У меня есть довольно простой «архитектурный» вопрос на этот раз.Простая обработка исключений для вложенных API JAVA
Предположим, что у нас есть два API, один «внешний» и один «внутренний». Реализация внешнего, для каждого из его методов, вызывает между прочим, что он делает, правильный метод внутреннего (это 1 на 1 сопоставление методов, каждый удаленный метод имеет внутренний) ,
Дополнительная информация: Внешний интерфейс аннотируется с помощью @Remote, а внутренняя (где разработана бизнес-логика) аннотируется с @Local.
ДЛЯ ОБРАБОТКИ ИСКЛЮЧЕНИЯ моей идеи был создать 2 исключения: один внутреннего и один внешнего. Конечно, внешний будет обертывать внутренние, как это делают службы.
Говоря в коде, ситуация такова:
@Stateless
public class RemoteServiceBean implements RemoteService
{
@Inject BusinessService businessSrv;
public method1(external parameters) throws RemoteException
{
try
{
bar();
businessSrv.method1(internal parameters);
}
//catch exceptions (also LocalException) and throws RemoteException
catch(Exception1 | LocalException ... e)
{
Logging....
throws RemoteException(e,e.getMsg());
}
}
}
@Stateless
public class BusinessServiceBean implements BusinessService
{
public method1(internal parameters) throws LocalException
{
try
{
foo();
}
//catch exceptions and throws LocalException
catch(Exception1 | Exception2... e)
{
Logging....
throws LocalException(e,e.getMsg());
}
}
}
Вопрос заключается в том: Предполагая, что архитектура услуг должна оставаться, как это, по вашему мнению, является правильным обработка исключений? Есть ли проблемы, связанные с архитектурой этого исключения?
Все советы приветствуются.
Спасибо!
это очень чистый подход! Ура! – aurelius