какие исключения может выдать этот код? - PullRequest
0 голосов
/ 29 сентября 2011

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

JAXBContext jc = JAXBContext.newInstance(QueryReport.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.valueOf(true));

marshaller.marshal(requestService, out);
is = new ByteArrayInputStream(out.toByteArray());
JAXBReader jcReader = new JAXBReader("QueryReport");

log.debug("\n# XML QueryRequest Response: " + jcReader.read(is).asXML());

так что, если у кого-то есть представление о том, какие исключения могут быть выброшены здесь.

Спасибо

Ответы [ 7 ]

2 голосов
/ 29 сентября 2011

Eclipse, Netbeans или любая другая современная IDE точно скажут вам, какие исключения возникают.

Полагаю, вы увидите как минимум ClassNotFoundException, IOException и JAXBExceptions.

1 голос
/ 29 сентября 2011

Зачем вам нужно ловить их отдельно? Что вы собираетесь делать по-разному для каждого? Если ответ «ничего», то просто поймайте их в общем.

Если вы этого еще не сделали, прочитайте разделы об исключениях в Effective Java и / или прочитайте « Effective Java Exceptions » (другой автор).

Если я проповедую хору - мои извинения.

На каком-то уровне в верхней части вашей программы вы, вероятно, захотите ловить непроверенные исключения - такие вещи, как NullPointerException.

1 голос
/ 29 сентября 2011

В кодовом блоке, который вы указали, возможное исключение будет JAXBException от вызова JAXBContext и ClassNotFoundException , если QueryReport.class не может быть найдено из пути к классам и IOException , если вызов ByteArrayInputStream не удался.

Вы можете использовать вашу IDE, чтобы обернуть соответствующую часть кода сгенерированным блоком try / catch, с тем исключением, которое он сочтет подходящим для блока синтаксиса.

1 голос
/ 29 сентября 2011

Предполагая, что вы говорите о неконтролируемых исключениях, обычно есть веская причина, по которой разработчики API решили не делать из них проверенные исключения. Но если вам необходимо их полностью перехватить, вам следует прочитать API для используемых вами методов.

0 голосов
/ 29 сентября 2011

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

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

0 голосов
/ 29 сентября 2011

Вы используете IDE?Eclipse (через компилятор) точно скажет вам, какие исключения будут выброшены, и даже сгенерирует стандартные блоки захвата для этих исключений.Или вы можете посмотреть на API для каждого из вызовов метода, чтобы увидеть возможные исключения.

0 голосов
/ 29 сентября 2011

Если вам явно необходимо перехватить какие-либо исключения, они будут проверены. Это означает, что вам нужно только перехватывать исключения, которые сообщает вам компилятор.

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