エラーが起きたとき、どこで何をしますか

握りつぶさない、受ける場所を境目に決める、利用者には次にすることを伝える、調べるための記録を残す、の 4 点で答える問い。

こう聞かれます

  • 「エラーが起きたとき、どこで何をしますか」
  • 「try と catch は、どこに書きますか。全部の関数に書きますか」
  • 「利用者に出すエラーの文と、開発者が見る記録は、どう分けますか」

面接官が見ている点

  • 空の catch でエラーを握りつぶす怖さを分かっているか
  • 「どこでも catch する」ではなく、受ける場所を決めて話せるか
  • 利用者向けの文と、調べるための記録を分けて考えているか

短い答え

  • エラーを握りつぶさず、受けて意味のある対応ができる所、たとえば画面や API の入口のような境目でまとめて受けます。
  • 利用者には、何が起きて次に何をすればよいかを短く伝え、内部の詳しい情報は見せません。
  • 開発者が原因を追えるように、何が起きたかを記録に残します。

少し詳しい答え

深い所は投げ、境目で受ける

年齢を読む関数は、読めなければエラーを投げるだけにします。受けるのは、送信を受け持つ境目の関数です。そこで記録を残し、利用者向けの文を返します。

JavaScript

function parseAge(text) {
  const age = Number(text);
  if (!Number.isInteger(age)) {
    throw new Error("年齢が整数でない");
  }
  return age;
}

function log(message) {
  console.log("記録", message);
}

function submit(text) {
  try {
    const age = parseAge(text);
    return age + " 歳で登録しました";
  } catch (err) {
    log(err.message);
    return "年齢を数字で入れてください";
  }
}

console.log(submit("20"));
console.log(submit("abc"));
20 歳で登録しました
記録 年齢が整数でない
年齢を数字で入れてください

parseAge は、画面に何を出すかを知りません。だから、同じ関数を画面からも API からも使えます。どう伝えるかは、受けた側が決めます。ここでは記録の代わりに console.log を使っていますが、実際のアプリでは記録を集める仕組みに送ります。

握りつぶさない

catch (err) {} のように何もしない catch を書くと、失敗しても画面は何も変わらず、記録も残りません。利用者は待ち続け、開発者は原因を追えません。受けたら、伝えるか、記録するか、上へ投げ直すかの、どれかを必ずします。

想定した失敗と、想定外の失敗

  • 想定した失敗入力の誤り、在庫切れなど。利用者に直し方を伝えれば、先へ進める
  • 想定外の失敗 データベースにつながらない、プログラムの不具合など。利用者には「時間をおいて試してください」のように伝え、詳しい情報は記録にだけ残す

利用者向けの文にエラーの中身をそのまま出すと、内部の作りやデータが外に漏れることがあります。

作った物と結ぶなら、たとえば「ポートフォリオの投稿の画面で、通信の失敗をまとめて受ける所を 1 つ作り、利用者にはもう一度試すボタンを出し、詳しい内容は記録に残すようにしました」のように話します。

よくある間違い

  • 空の catch で黙らせる失敗が誰にも伝わらず、原因も追えなくなります。伝える、記録する、投げ直すのどれかをします
  • 全部の関数に try と catch を書く 受けても何もできない所で受けると、同じ処理が散らばり、かえって見落とします。対応できる境目で受けます
  • 内部のエラーの文をそのまま利用者に見せる利用者には役に立たず、作りの情報が漏れることもあります。利用者向けの文と記録を分けます

深掘りの問い

  • 「fetch で 404 が返ってきたとき、catch に入りますか」 入りません。fetch は通信そのものが失敗したときだけ失敗になるので、response.ok を調べて自分で扱う、と答えます
  • 「後片付けを必ずしたいときは」 finally に書くと、成功しても失敗しても動く、と答えます
  • 「記録には何を残し、何を残しませんか」いつ、どこで、何が起きたかを残し、パスワードや個人の情報は残さない、と答えます

確認日 2026年10月23日

技術面接問題の一覧へ戻る