広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English
 

SESSION 11 その36
デバッグの基本 つづき
  エラーの原因

 
次にエラーの原因
考えてみよう。

原因は大きく分けると3種類

・コードの問題
・コード以外の問題
・複合的な問題

主な原因はコードの問題だ。
 
まずコードを
調査するんだね。
  探偵みたい!
 
 

エラーの原因

コードの問題(実行時エラー、論理エラー、または両方)
コード以外の問題(パソコンの故障など)
複合的な問題
(コードの複数箇所のエラー、コードとコード以外の複合エラーなど)



まずはコードの問題。

実行時エラーの場合

Javaがエラーメッセージを
出して、おおよその原因を
教えてくれるから、
ある程度解決しやすい。
Javaランタイムが
助けてくれるんだね。
さっき見た
メモリー不足
エラーとかね。

コードのエラーを
出してる行も
教えてくれるよ。
ヒントを
くれるんだね。


 
論理エラーの場合
考え方や作り方が間違っていたり
勘違いが原因だから
原因を探すのが難しい場合が
多い。


忘れている場合や思い込み。
そもそも、そのやり方を知らない
場合もあるからね。
 
そうか。

あたしが前に
計算問題で、
掛け算のやり方
間違えてたのと同じ
だ。

全然、気がつかなかった
もんね。
あんな感じなんだね。
  あたし1人じゃ
気づくの
時間かかったね。
 
 
SESSION 7 で、ことがやった計算の間違え

計算問題
 
計算の答えはいくつ?
(2048 × (1024 + 1024)) - 8658 + 896 × 1024 = ???
 
詳しくはSESSION 7参照
 
 
「掛け算は、足し算引き算よりも先に計算しなければいけない」
 
ことは、この事を忘れていたため、正しい計算ができなかった。
 
掛け算のやり方を忘れてたら、何が間違いの原因か分からない。
論理エラーは、論理的な間違い以外にも、思い込みや
勘違いの場合もあるので原因究明に時間がかかる場合が多い。


もちろん、両方が同時に
起こっている場合もある。

注意しよう。
うーん、
難しい。。。
覚えないでいいよ。
参考ね。

ざっと読んでー。
はい。
 
コードの問題の例(実行時エラー)
Javaの規定に違反したために起こったエラー
(書式が違う、言語仕様と違っていることをした、など)
Javaの規定の限界を超えたために起こったエラー
(循環関数などでJavaの呼出限界を超えた場合、など)
関数やAPI(ライブラリ)の使い方の間違いによるエラー
(引数の順番を間違えた、など)
変数の使い方の間違いによるエラー
設定の間違いによるエラー
(IDEの設定ファイルやJavaの起動時の引数などの設定ミス)
コードの問題の例(論理エラー)
考え方の間違い
(ロジックやアルゴリズム。処理を実行する順番がおかしいなど)
知識不足
勘違い
忘れている
 
論理エラーによって、実行時エラーが引き起こさている場合など
複合している場合もある。


それから、エラーの原因が
コード以外の場合。

機械が壊れていたり、
OSの不具合が原因だったり・・・。

コードを変更した途端に
エラーが出て、それが原因だと
思って延々調べてたら、実は
タイミングよくネットワークカードが
壊れたせいでした!
「なんでー、まさか!」ってね。

OSやJavaをアップデートした時も
注意しよう。
えー!

コードを見てるだけじゃ
だめな場合があるんだ。

いろいろ調査する
場合もあるんだね。
お前
すげー
言いそう。
なんでー、
まさか!

なんちゃって。
 
コード以外の問題の例
Javaの不具合によるエラー
OSの不具合によるエラー
他のソフト(ライブラリなどを含む)の不具合によるエラー
プログラムの実行環境によるエラー
(ライブラリのバージョンの違いや不足など)
ハードウェアのエラー
(ハードディスクやメモリー、ネットワークカード、物理的な故障や
ドライバーの追加・変更によるものなど)
上記の組み合わせによるエラー
JavaやOSのアップデートやライブラリーの追加・変更、
新たな機器の接続やドライバーの追加・変更など・・・

今まで出ていなかったエラーが
開発環境の変更後に出た場合、注意する必要がある。


それからエラーの原因が
エラーの複合の場合もあるね。

同時に複数のエラーが
起きている場合や
別のエラーが原因で、さらに
引き起こされているエラーね。

実行時エラーのエラーメッセージとは、
全く別のところが原因だったって
こともあるよ。
めぐりめぐってー
出たエラーとかー

「風が吹けば
桶屋がもうかる」
みたいなエラー

もう最悪ー
なんでー、
まさか!
ひええええ

もお、何が何だか
分からないー!
 
複合的な問題の例
2箇所以上のコードのエラーの複合エラー
コードのエラーとライブラリのバージョンの違いによるエラー
OSと開発環境のバージョンの違いによるエラー



だから、どこにエラーの
原因があるのか
一つ一つ切り分けて
調べていく必要がある。

「原因の切り分け方」を
覚えていく必要がある
んだ。

経験の差が
滅茶苦茶出る部分だな!
・・・・・・
・・・・・・
とどめを
どーん
あー  
 


悪い、悪い。参考までね。

今は深く考えないでいいよ。
軽く知っといて。

実行時エラーと
論理エラーは覚えといてね。

ゆっくり慣れていこうな。
今は
深く考えないで
いいんだね。

どうせ
遅かれ早かれ
経験するからー

ヒヒヒ
そっか。

よかった。


早速
論理エラー
だしー
そっか!

今回のは論理エラー
なんだっけ。

エラーが
見つけづらいんだ・・・。

あわわ。


 
 

広告
home もくじ 前のページを読む 次のページを読む
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -
広告