プログラムの実行箇所について

このエントリーをはてなブックマークに追加

 

 プログラムの異常を探す場合に注意があります。Corona SDK シミュレータでは実行した行のチェックしか行われません。(文法異常でなければ、どの開発環境でも大体そうですが)
 例えば以下のようなプログラムの場合、4行目では”a = “という文字列と、「abc」の中身を文字列として結合しようとしています。しかし「abc」という変数は宣言もしていなければ値の設定もしていません。なので中身は「nil」何もない状態です。その何もない状態と結合しようとすれば通常異常になります。

  1. local a = 100
  2. print(“a = “..a)
  3. if (a == 10000) then
  4.     print(“a = “..abc)
  5. end

 しかし、このプログラムをCorona SDK シミュレータで実行させると異常が発生しません。なぜでしょうか?その理由はプログラム実行時の動きにあります。3行目で分岐処理があります。この条件が真にならないため4行目の処理が実行されません。では処理が通るようにしてみましょう。

  1. local a = 100
  2. print(“a = “..a)
  3. if (a == 100) then
  4.     print(“a = “..abc)
  5. end

 3行目の条件を代入した数値と同じにします。すると条件が真になるため、4行目の処理が実行されます。すると異常が発生します。以下のような異常メッセージです。

 このように異常の種類によっては全く気づけないことが起きてしまいます。サーバでビルドを行っても見つけることは出来ません。なので、テスト段階ですべての処理を通すように気を付けなくてはいけません。対策ですが、ログなどに制限がない場合、すべての分岐にログを出すようにしておくことで、通っていない部分を発見することができます。ただprintで出す場合、非常に量が多くなるので気を付けてください。

<補足>
 文法的に完全に間違えている場合は異常メッセージが出ます。以下のプログラムの場合、4行目の閉じかっこがないので異常が発生します。

  1. local a = 100
  2. print(“a = “..a)
  3. if (a == 10000) then
  4.     print(“a = “..abc
  5. end

     
 

<更新履歴>

更新日 Corona SDKのバージョン
新規作成 2015年6月6日 v2015.2646

 

前へ         メニューへ          次へ

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)