Вид условия при 404

169
17 апреля 2017, 03:35

Есть некий бот для вк с командой "вики". При существующей в вики статье, бот даёт на неё ссылку. При несуществующей всё еще даёт ссылку, но с FileNotFoundException. Какого вида необходимо сделать условие, чтобы предотвратить exception и вывести сообщение вида "статья не найдена"?

@Override
public String execute(IDialog dialog, String[] args, Bot bot) {
    String text = ObjectJoiner.join(" ", args);
    try {
        HttpURLConnection connection = (HttpURLConnection) new URL("https://ru.wikipedia.org/wiki/" + text).openConnection();
        connection.setInstanceFollowRedirects(true);
        connection.connect();
        connection.getInputStream().close();
        return "Лови!<br>" + URLDecoder.decode(connection.getURL().toString(), "UTF8");
    } catch (Exception e) {
        e.printStackTrace();
        return e.getLocalizedMessage();
    }
}

Вид ексепшена при несуществующей статье следующий:

java.io.FileNotFoundException: https://ru.wikipedia.org/wiki/%D0%96%D0%B8%D1%80%D0%B8%D0%BA
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at ru.hilgert.cmds.commands.WikiCommand.execute(WikiCommand.java:45)
    at ru.hilgert.cmds.HBotCmds.dispathCommand(HBotCmds.java:254)
    at ru.hilgert.cmds.HBotCmds.handleCmd(HBotCmds.java:208)
    at ru.hilgert.cmds.HBotCmds.onCmd(HBotCmds.java:168)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at ru.hilgert.hbot.events.EventHandlerMethod.invoke(EventHandlerMethod.java:23)
    at ru.hilgert.hbot.plugin.PluginManager.fireEvent0(PluginManager.java:118)
    at ru.hilgert.hbot.plugin.PluginManager.fireEvent(PluginManager.java:110)
    at ru.hilgert.hbot.Bot$MessageConsumer$1$1.call(Bot.java:107)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

пофикшено изменением

   } catch (Exception e) {
    e.printStackTrace();
    return e.getLocalizedMessage();
}

на

   } catch (Exception e) {
    e.printStackTrace();
    return "Статья не найдена";
}
READ ALSO
MyBatis - Invalid bound statement (not found)

MyBatis - Invalid bound statement (not found)

Начал разбираться с mybatis, но при работе с ним не использую spring

381
Пару вопросов с собеседования [требует правки]

Пару вопросов с собеседования [требует правки]

Недавно был за собеседовании на стажера (java)Там было очень интересное собеседование в процессе которого выяснилось что некоторых знаний...

240
Создание label из JS

Создание label из JS

Добрый день!

281