как вызвать метод, который содержит обработчик исключений

1

Когда у меня есть такой метод:

public XmlParser() throws XmlPullParserException, IOException
{
  ...do some stuff...
}

Как я могу назвать этот метод?

Я попытался сделать это:

XmlParser xmlparse = new XmlParser();

но я получаю ошибку IOException исключения типа исключения.

благодаря

Теги:
exception-handling

5 ответов

3
Лучший ответ

Поскольку конструктор для XmlParser объявляет, что он throws XmlPullParserException, IOException, тогда вам нужно сделать одно из следующих действий в коде.

Ваш первый вариант - поймать эти Исключения непосредственно в вашем коде:

XmlParser xmlparse;

try {
    xmlparse = new XmlParser();
} catch (XmlPullParserException e) {
    // handle...
} catch (IOException e) {
    // handle...
}

В качестве альтернативы вы можете объявить какой бы метод вы не включали этот код, так как он также throws XmlPullParserException, IOException.

Наконец, вы можете поймать одно из исключений и передать другой. Предположим, что вы пишете myMethod:

public void myMethod() throws IOException {
    XmlParser xmlparse;

    try {
        xmlparse = new XmlParser();
    } catch (XmlPullParserException e) {
        // handle...
    }
}
  • 0
    Я попытался 1-й вариант, и я получаю ошибку, выделяя «е», что говорит «исключение дубликат поля». Я думаю, потому что он видит 2 "е"?
  • 1
    Я не думаю, что это так; каждый e должен быть привязан к вмещающему блоку ... Если у вас нет другой локальной переменной, объявленной с именем e вне try / catch. В любом случае, приведенный выше код не протестирован, но должен быть достаточно близко, чтобы вы могли добраться туда, куда вам нужно идти ...
3

Либо используйте блок try/catch или throws.

try/catch если вы хотите обработать его:

try {
    XmlParser xmlparse = new XmlParser();
} catch(XmlPullParserException ex) {
    // handler code
} catch(IOException ex) {
    // handler code
}

throws если вы делаете это внутри метода и хотите, чтобы вызывающий метод обрабатывал его:

public void yourMethod() throws XmlPullParserException, IOException {

    XmlParser xmlparse = new XmlParser();
    //...
1

Вы должны следить за исключениями:

....
try {
    XmlParser xmlparse = new XmlParser();
} catch (XmlPuillParserException e) {
    // do something
} catch (IOException e) {
    // do something
}
1
try{
    XmlParser xmlparse = new XmlParser();
}catch(XmlPuillParserException e){
    //do something useful
}
catch(IOException e){
    //do something useful
}

Или вместо IOException и XmlPuillParserException вы можете использовать Exception, но это плохой стиль

1

Вы окружаете его с помощью try catch:

try{
XmlParser xmlparse = new XmlParser();
} catch (XmlPullParserException e) {
} catch (IOException) {
}

Не забывайте правильно обрабатывать исключения.

  • 1
    Это должно читать catch (IOException e) .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню