[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.5 Octaveはどのようにエラーを報告するのか

Octaveは,妥当ではないプログラムについて,2種類のエラーを報告します。

もしOctaveが打ち込まれた内容を理解できないならば,parse errorが発生し ます。たとえば,キーワードのスペルを間違ったとします。

 
octave:13> functon y = f (x) y = x^2; endfunction

Octaveは,以下のようなメッセージをただちに表示するでしょう。

 
parse error:

  functon y = f (x) y = x^2; endfunction
          ^

大部分のパースエラーについて,Octaveでは,あなたの入力で意味をなすことのでき ない行の位置をマークするために,キャレット記号(`^')を使用します。この 例の場合,functionというキーワードのスペルが誤っていたため,Octaveは エラーを生成しました。`function f'と解釈するのではなく,Octaveは2つの連 続する変数名として解釈しました。これは,この文脈では妥当ではありません。 yにおいてエラーをマークしたのは,最初の名前(functon)がそれ自身,妥 当な入力として受け入れられたからです。

エラーメッセージの別の種類は,評価時に発生します。これらのエラーは 実行時(ランタイム)エラー,あるいは時々評価エラーとも呼ばれます。 これは,それらのエラーは,プログラムが実行(run),あるいは 評価(evaluated)されたときに発生することによるものです。たとえば,以前 の関数定義におけるミスを修正した後に,以下のように打ち込むとします。

 
octave:13> f ()

Octaveは以下のように応答するでしょう。

 
error: `x' undefined near line 1 column 24
error: evaluating expression near line 1, column 24
error: evaluating assignment expression near line 1, column 22
error: called from `f'

このエラーメッセージは複数の部分に分かれており,エラーの原因を突き止める 手助けとなる一片の情報を与えています。これらメッセージは,最も奥にあるエ ラー点から生成されており,式および関数呼び出しを囲むトレースバックを提供 します。

上の例において,最初の行は,`x'なる名前の変数が,何かの関数あるいは 式の1行24桁目付近で定義されていないことが判明したことを示しています。関数 内で発生したエラーについて,その行は,関数の定義を含むファイルの始まりか らカウントされます。トップレベルで発生したエラーについて,その行番号は, 入力行の番号を示します。これは,通常はプロンプト文字列に示されています。

この例の2行目および3行目は,代入式でエラーが発生したことを示しており,エ ラーメッセージの最後の行は,エラーが関数fの中で発生したことを示し ています。もし仮に,関数fが別の関数(たとえばg)から呼ばれ ていたならば,エラーのリストはもう1行多くなったことでしょう。

 
error: called from `g'

これらの関数呼び出しリストは,ふつうは,エラーが起こる前にプログラムを実行 したパスをかなり容易にたどれるようになっており,再度実行する前にエラーを修 正しやすくなっています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated on July, 20 2006 using texi2html 1.76.