Есть некий бот для вк с командой "вики". При существующей в вики статье, бот даёт на неё ссылку. При несуществующей всё еще даёт ссылку, но с 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 "Статья не найдена";
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Начал разбираться с mybatis, но при работе с ним не использую spring
Недавно был за собеседовании на стажера (java)Там было очень интересное собеседование в процессе которого выяснилось что некоторых знаний...