Поймать исключение по классу? - PullRequest
1 голос
/ 03 декабря 2010

Я хотел бы поймать исключение, которое ожидаю, но позволю другим пройти.

Решение, к которому я пришел в данный момент:

protected void perfromCall(Class expectedException) throws Exception {
    try {
        response = call.call(request);
    } catch (Exception e) {
        if (!expectedException.isInstance(e)) {
            throw new Exception(e);
        }
    }
}

Хотя это будет молча сгребать ожидаемое исключение, как я хотел бы, и выбрасывать другие, мне не нравится в нем то, что оно оборачивает неожиданные исключения, и теперь я должен отлавливать неожиданное в вызывающей стороне, тогда как ранее (до попытки чтобы молча перехватить ожидаемые исключения) я мог позволить им всплыть на тестовой основе, чтобы провалить тест.

Есть ли более понятный способ сказать: «Я ожидал исключения класса A, но для любого другого исключения пусть он будет брошен вверх по цепочке, пока не будет обработан тестовой платформой выше»?

Редактировать: я хотел предоставить некоторое обоснование того, почему я хочу это сделать, поскольку были некоторые ответы (теперь удаленные), которые молча задавали вопросы, как есть исключение. Это для тестовой среды, которая вызывает сервис. Некоторые из тестов передают службе неверные аргументы, поэтому они ожидают исключения, выдаваемого службой из-за перехвата неверного запроса. Поэтому я хочу молча съесть ожидаемое исключение, но все же позволить неожиданным исключениям вспыхнуть и не пройти тест.

1 Ответ

7 голосов
/ 03 декабря 2010
protected void perfromCall(Class<?> expectedException) throws Exception {
    try {
        response = call.call(request);
    } catch (Exception e) {
        if (!expectedException.isInstance(e)) {
            throw e;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...