обработка исключений на стороне сервера Java Java - PullRequest
1 голос
/ 10 июня 2011

Видите ли вы возможность регистрировать исключения на стороне сервера?
Рассмотрите такой код на стороне сервера:

catch (Exception ex) {  
    throw new IllegalStateException (ex);  
}  

Исключение вызвано вызовом на стороне клиента.Конечно, исключение будет замечено на стороне клиента.Есть ли способ как-то справиться с этим на стороне сервера, без исключений времени выполнения catch?Какой-то обработчик, который позволил бы мне, например, регистрировать трассировку стека исключения?

Есть идеи?

Ответы [ 3 ]

1 голос
/ 10 июня 2011

вы можете обернуть ваш экземпляр сервера в java.lang.reflect.Proxy и реализовать регистрацию на стороне сервера в прокси. просто убедитесь, что прокси-сервер экспортирован, а не серверная реализация.

1 голос
/ 18 июня 2011

Существуют системные свойства RMI, которые автоматически регистрируют для вас исключения на стороне сервера.См. Ссылки на домашней странице RMI.

0 голосов
/ 10 июня 2011

Как правило, серверный метод верхнего уровня будет иметь throws Exception.

Если вы оберните свой код "сделать это" в этом методе с помощью исключения try-catch, и вы можете записать его там как броситьЭто.

public Response myServerTopLevelMethod() throws Exception {
    try {
        myImplCode();
    catch (Exception e) {
        Log.error(e);
        throw e;
    }
}

Теперь у вас есть несколько вариантов того, что делать.Основные параметры:

  1. Вы можете просто повторно сгенерировать исключение (как указано выше)
  2. Вы можете играть хорошо и вернуть ответ «что-то плохое случилось» - как и многие веб-серверыdo

Вот пример варианта 2:

public Response myServerTopLevelMethod() throws Exception {
    try {
        myImplCode();
    catch (Exception e) {
        Log.error(e);
        return new Response("Yikes! Something exploded... we'll look into it.");
    }
}

Между прочим, «Log + throw» варианта 1 - это один из немногих случаев, когда вы когда-либо хотели это сделать;на методе верхнего уровня.В других случаях вы обычно должны или log или throw, а не оба.

...