もじれつとがめん

プログラムの忘備録とゲームとかその他色々。

エラーはよく見ようぜ、というありふれた当たり前の話

エラーや応答はよく見ましょう

多分当たり前なんだけど、上手く出来てない自分が居る事に非常に腹を立てています。
という訳で今回は、各所で見かけけるよく見るエラーのタイプを分けて、おおよその原因を分類しようかと。

エラーメッセージの共通点

エラーメッセージが大量に出てきたり、少ししか表示されなかったり、いろんなパターンがあって戸惑うかもしれないけど大抵はエラーメッセージにそのまま答えがでてるのでそれを元に修正する事で解決できるので"うわ!なんか意味わかんないのが出たっ..."ってなるより、"パソコン様がどこが悪いのか指摘してくださった.."という認識にしたほうがすこしはやる気になれるかもしれない。

エラーメッセージで大抵付いてくるヒントは
問題の発生した行数、関数名、変数名、要素名、クラス名、ディレクト
さらにエラー状態を表示してくれる。

これだけわかれば何が悪いのかたいてい分かる。
問題の発生した行数、変数が判明して、エラー状態は undefind 系なら変数に何も入ってないとか、そもそも変数が存在しないとか具体的な推測が可能になるのでエラーメッセージは超重要。

何かしらの要素が無い系

Undefind index

[code] Undefined index: ~ [/code] このタイプは大抵連想配列や配列の中に要素が定義されて無い!!って怒っています。
Undefinde index の後ろに大抵ヒントとして行数やれ、変数名とか表示されているので、ソースの中で代入し忘れとかそもそもそんな要素作っていなかったなんてことは無いか調べよう。

Undefined variable

[coode] Undefined variable: ~ [/code] このタイプは最初に紹介したやつの変数版。配列じゃなくて、変数が定義されてないとか初期化してないとか。
なので、該当箇所のソースを調べてキチンと定義されているか調べよう。

存在してない系

~ not found

[code] Fatal error: Class 'hogehoge' not found in /test/hogehoge.php line:100 [/code] このタイプは、クラスが無い時に良く見かける。
っていうか not found 自体が"見つからない"的無い意味だしね。
in の後が問題の発生したファイルで、lineの後が行数になっているので、対象のクラス名を使用してないか、または存在しているのか確認しよう。

Call to undefined function

[code] Fatal error: Call to undefined function hoge ~ [/code] このタイプは関数のスペルミスか、そもそも関数を定義してなかったり、さらには関数がインストールされてなかった時に出てくる。
この場合は疑うべきは スペルミス > 関数の定義ミス、継承とかのミス > 関数のインストールをしていない
の順番で疑うと良い気がする。

終わりに

とりあえずちまちま遭遇したら書き足していく。 珍しいとか複雑に要素が絡まって別の原因とかもあるから、とにかく引き出しを増やす事が一番エラー対策になるのかも知れない。