LINE Bot制作中キーワード検索が該当なしの場合のシステムエラーを止めたい
解決したいこと
初歩的な質問で恐縮です。
キーワード検索した飲食店のURLを受信するLINE Botの制作を行っていますが、検索結果が存在しない場合、システムが止まってしまいます(=「ポートXXXX番でExpressサーバーを実行中です…、」が止まってしまいます)。正しく店名やキーワードを入れた時は正常に動作し、URL情報を取得できます。ホットペッパーAPIを使用しています。
検索結果が存在しない場合は、
VS Code内にJavaScriptファイル(jsファイル)を作成し、Node.jsで実行しても上記エラーが出てしまいます。 //try{ } catch (error)の正しい使い方、もしくは別の解決方法をご指摘いただければ大変有難いです。よろしくお願いいたします。
現行のコード
const sampleFunction = async (event) => {
// ホットペッパーAPIのURLとAPIキーを入れる。Event.message.textでメッセージ内容を拾いEncodeURIで日本語変換されたキーワードを返す。キーワード情報からホットペッパーのURLを表示。
const res = await axios.get('http://webservice.recruit.co.jp/hotpepper/shop/v1/?key=ここにAPIキーを入れる&format=json&keyword='+encodeURI(event.message.text));
console.log(res.data.results.shop[0].urls.pc);
return client.replyMessage(event.replyToken, {
type: 'text',
text: res.data.results.shop[0].urls.pc
});
}
自分で試したこと
下の変更後のコードの通り、//try{ } catch (error)を現行のコードに追加しました。
(それ以外の変更はありません)
しかし、今度は検索結果がヒットしない場合は元より、本来検索結果が存在する場合も、システムが止まってしまいます(=「ポートXXXX番でExpressサーバーを実行中です…、」が止まってしまいます)。
変更後のコード( //try{ } catch (error)追加後のコード)
const sampleFunction = async (event) => {
// ホットペッパーAPIのURLとAPIキーを入れる。Event.message.textでメッセージ内容を拾いEncodeURIで日本語変換されたキーワードを返す。キーワード情報からホットペッパーのURLを表示。
try {
const res = await axios.get('http://webservice.recruit.co.jp/hotpepper/shop/v1/?key=ここにAPIキーをコピペ&format=json&keyword='+encodeURI(event.message.text));
console.log(res.data.results.shop[0].urls.pc);
//try{ } catch (error)で検索にかからない時に、エラー情報を取得してシステムが止まらないようにする
}catch (error) {
console.error(error)};
return client.replyMessage(event.replyToken, {
type: 'text',
text: res.data.results.shop[0].urls.pc
});
}
0