プログラミング

プログラムのエラーについて理解をまとめる

こんにちは、ともです。

プログラミング言語を学習していると、エラーと戦う日々が続きますよね。

英文で出たエラーでも、焦らずに落ち着いて読み進める事が必要になってきます。

言語に依存せずプログラミング言語が教えてくれるエラーには3種類存在します。

  • パースエラー(シンタックスエラー)
  • 実行時エラー(Fatal Error)
  • 警告・注意(Warning Notice)

この記事では、プログラミングエラーの3種類である、パースエラー(シンタックスエラー)、実行時エラー(Fatal Error)、警告・注意について理解をまとめたいと思います。

パースエラー(シンタックスエラー)

パースエラー、シンタックスエラーというエラー名は一番目にするエラーではないでしょうか。

パースエラーとは文法が誤っている場合にでるエラーです。

  1. セミコロンが抜け
  2. 括弧が閉じれていない

といったとても単純なエラーです。

なのでこのエラーが出た時はちょっとした書き間違えですので、間違え探しをエラーコードを読みながら探していきましょう。

また、パース(parse)という処理は、あなたが書いたプログラムを実行環境が構文解析しデータ構造に変換する処理となります。

  • ブラウザがHTMLファイル解析し、DOMを生成する

このような解析処理をパース(parse)というのですが、パースエラーという事は文法に沿っておらず、解析不可能ってことですね。

また、シンタックス(syntax)の意味は『構文』という意味です。パースエラーと同様に構文に誤りがある事が原因で発生します。

インタプリタ言語のソースコードが解析される流れは下記であり、

  • ソースコード→字句解析→構文解析(パースエラー箇所)→意味解析→実行

パースエラーの発生場所は実行よりも前の段階であることがわかります。

よって、1行もプログラムは実行されず終わります

実行時エラー(Fatal Error)

実行時エラーとは、その名の通り実行時に発生するエラーです。

インタプリタ言語の場合、解析の流れは次でした。

  • ソースコード→字句解析→構文解析→意味解析→実行(実行時エラーの箇所)

実行時エラーというのは、解析後の実行段階で発生するエラーである事がわかります。

実行時エラーは問題のコードを実行した段階でエラーが発生するので、プログラム自体は実行されます。

問題のある箇所まで実行した時点で、そのエラーが警告・注意・Fatal Error(致命的なエラー)かによって以降の挙動が変化します。

  • Fatal Error(致命的なエラー)の場合は、実行が停止する
  • 警告や注意の場合は、警告・注意内容を表示してプログラムは実行される

実行時エラーの挙動には上記のような違いがある事がわかりました。

まとめ

パースエラー、実行時エラーについて、理解をまとめました。

  • パースエラーは、文法ミスなどの解析エラーのため実行されず終了
  • 実行時エラーは、解析後の実行段階でのエラーであり、Fatal Error・警告・注意で挙動が変わる
  • Fatal Errorは実行が停止する
  • 警告・注意はエラーを表示し実行を続ける