デバッグの基本 つづき |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
まずはエラーの種類を
確認しておこう。
主なエラーは2種類。
実行時エラーと
論理エラーだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
大きく
言うとね。 |
 |
|
 |
うーん・・・
よく
分かんない
けど。。。 |
|
|
|
 |
|
 |
|
エラーの種類
実行時エラー |
プログラムを実行した時に起こるエラー。
Javaランタイムからエラーメッセージが
出力され、プログラムは基本的に停止する。 |
論理エラー |
プログラムが想定した結果を出さないエラー。
Javaランタイムによるエラーメッセージは表示されず、プログラムは正常に実行される。
プログラムのアルゴリズムやロジックが
間違ってる場合に起こる。
原因が分かりにくい場合が多い。 |
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
実行時エラーは
実行すると、Javaランタイムが
エラーメッセージを出して
プログラムが停止してしまう形の
エラー。
これは例えば、
プログラムで大量に変数を作って
メモリーをオーバーした場合とか、
存在しない変数を使った場合に
起こったりする。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
プログラムは
基本的に
「停止」ね。 |
|
Javaが
エラーの原因を
教えてくれるんだ。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
Javaにできないことを
実行した場合に
止まっちゃうんだね。
エラーメッセージが
表示されるんだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
 |
|
 |
|
エラーの種類
実行時エラー |
プログラムを実行した時に起こるエラー。
Javaランタイムからエラーメッセージが
出力され、プログラムは基本的に停止する。 |
論理エラー |
プログラムが想定した結果を出さないエラー。
Javaランタイムによるエラーメッセージは表示されず、プログラムは正常に実行される。
プログラムのアルゴリズムやロジックが
間違ってる場合に起こる。
原因が分かりにくい場合が多い。 |
|
|
|
 |
|
 |
|
|
 |
|
 |
|
Javaのエラー表示例
java.lang.OutOfMemoryError |
メモリ不足のため、これ以上割り当てが出来ない場合のエラー |
|
|
java.lang.NoSuchFieldException |
指定されたメンバ変数(フィールド)が無い場合のエラー |
|
|
java.io.IOException |
入出力関係のエラー |
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
論理エラーは
プログラムの内容が
間違っているために、
開発者が期待した結果が
出ない形のエラーだ。
プログラムはちゃんと動くけど
結果がおかしい。
ロジックやアルゴリズムなどの
論理的な間違いのことね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
開発者の間違いで
起こるエラー・・・。
結果が変なんだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
プログラムは
基本的に
「停止しない」よ。 |
 |
|
 |
うーん・・・
分かったような
ないような・・・ |
|
|
|
 |
|
 |
|
エラーの種類
実行時エラー |
プログラムを実行した時に起こるエラー。
Javaランタイムからエラーメッセージが
出力され、プログラムは基本的に停止する。 |
論理エラー |
プログラムが想定した結果を出さないエラー。
Javaランタイムによるエラーメッセージは表示されず、プログラムは正常に実行される。
プログラムのアルゴリズムやロジックが
間違ってる場合に起こる。
原因が分かりにくい場合が多い。 |
|
|
|
 |
|
 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
論理エラーの場合、
Javaランタイムはエラーを出さない。
動作上は問題ないからね。
見た目は正常に動いている。
例えば・・・
みかんの絵を描くプログラムを
作ったとするだろ。
みかんの色は本来オレンジ色に
したかったのに、作った人が間違って
プログラムのどこかで
ピンク色を指定していた場合とかね。
プログラムはちゃんと動いてるから
みかんの絵は描けるけど
期待した絵じゃない。
これが論理エラー。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
論理的に
おかしいって
ことね。 |
|
 |
かわいいー
ピンクの
みかんー
|
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
あはは!
わかった!
作った人のエラー
なんだね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
論理エラーの
他の例だとー
本来4問あるのに
3問しか出題されない
ポンコツクイズゲーム
とかね。 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
 |
ぽんこつ
すーぷ。
ククク |
|
あたしが
間違えてるんだ。 |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
ふえっ、
おかしい原因は
論理エラーなの!?
そうだ!
思った通りに動いてない!
ゲーム止まってないし、
Javaのエラーメッセージ
も出てなかったっけ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
あたしは
ピンクの
みかん・・・ |
 |
|
 |
かわいくて
よかったねー。 |
|
|