15.例外(エラー)
1.はじめに
例外については、下記の項目で説明されています。
[RGSS2 リファレンス] - [標準ライブラリ] - [組み込み例外クラス]
なぜエラーが出たのかは、2行目の英文を読めばわかります。
その文にしたがって、間違っている箇所を修正しましょう。
[RGSS2 リファレンス] - [標準ライブラリ] - [組み込み例外クラス]
なぜエラーが出たのかは、2行目の英文を読めばわかります。
その文にしたがって、間違っている箇所を修正しましょう。
2.SyntaxError
記述したコードに文法的な誤りがあった場合に発生します。
シンタックスエラーは、単なる文法エラーですので修正が容易です。
ヘルプの入門編を熟読して、文法や制御構造について正しく理解しておきましょう。
end の数が合わないときによく発生します。
end 忘れだと、カーソルが最後の行になってしまいます。
これは、end が1つずつずれて判断され、最後に閉じなければならないところで
end が無いので、例外が発生してるわけです。
間違いを発見しやすいように、インデントをしっかり行いましょう。
文字列や配列などの閉じ忘れでも発生します。
文字列部分は色が変わりますので、色がおかしなことになったら要注意です。
配列やハッシュでの , 忘れでも発生しやすいです。
eval 内でエラーが起こった場合に発生しやすいです。
イベントコマンド「スクリプト」に記述ミスがないか確認してください。
シンタックスエラーは、単なる文法エラーですので修正が容易です。
ヘルプの入門編を熟読して、文法や制御構造について正しく理解しておきましょう。
end の数が合わないときによく発生します。
end 忘れだと、カーソルが最後の行になってしまいます。
これは、end が1つずつずれて判断され、最後に閉じなければならないところで
end が無いので、例外が発生してるわけです。
間違いを発見しやすいように、インデントをしっかり行いましょう。
文字列や配列などの閉じ忘れでも発生します。
文字列部分は色が変わりますので、色がおかしなことになったら要注意です。
配列やハッシュでの , 忘れでも発生しやすいです。
eval 内でエラーが起こった場合に発生しやすいです。
イベントコマンド「スクリプト」に記述ミスがないか確認してください。
3.ArgumentError
wrong number of arguments(- for -)
『wrong number of arguments(指定された引数の数 for 本来の引数の数)』
引数の数が合っていないときや、値が正しくないときに発生します。
引数の数を確認してください。
『wrong number of arguments(指定された引数の数 for 本来の引数の数)』
引数の数が合っていないときや、値が正しくないときに発生します。
引数の数を確認してください。
4.IndexError
index - out of -
添字が範囲外のときに発生します。
サンプルは、8文字目の直後に"D"を加える処理ですが、8文字もないため例外が発生します。
添字が範囲外のときに発生します。
サンプルは、8文字目の直後に"D"を加える処理ですが、8文字もないため例外が発生します。
5.NameError
変数名やメソッド名などの記述された名前が見つからない場合に発生します。
つづりなど名前が間違っていないかを確認してください。
undefined local variable or method
『'...' という名前のローカル変数もしくはメソッドが for このクラスに定義されていない』
未定義のローカル変数やメソッドを使用した場合に発生します。
他の変数(グローバル、クラス、インスタンス)はnilで初期化されるので、代入を省略できます。
また、実際に代入処理が行われなくともnilで初期化され、ローカル変数として宣言されます。
uninitialized constant
未定義の定数を使用したときに発生します。
ローカル変数と同様に、使用する前に代入処理を行い初期化する必要があります。
undefined method
alias使用時にも発生します。
つづりなど名前が間違っていないかを確認してください。
undefined local variable or method
『'...' という名前のローカル変数もしくはメソッドが for このクラスに定義されていない』
未定義のローカル変数やメソッドを使用した場合に発生します。
他の変数(グローバル、クラス、インスタンス)はnilで初期化されるので、代入を省略できます。
また、実際に代入処理が行われなくともnilで初期化され、ローカル変数として宣言されます。
uninitialized constant
未定義の定数を使用したときに発生します。
ローカル変数と同様に、使用する前に代入処理を行い初期化する必要があります。
undefined method
alias使用時にも発生します。
6.NoMethodError
定義されていないメソッドを呼び出した場合に発生します。
メソッド名や定義箇所、レシーバの確認をしてください。
undefined method
『'...' という名前のメソッドが for このクラスに定義されていない』
定義されていないメソッドの呼び出しが行われたときに発生します。
使用したメソッドのつづりが間違っていないか、
モジュールメソッドなど、クラス・モジュール名が抜けていないかを確認しましょう。
$game_actor[3].name など s の付け忘れなど。
また、半角スペースを全角で行っている場合などにも発生する場合があります。
ウェブサイトなどからコピペした際には、注意してください。
メソッド名や変数名などにマルチバイト文字も使用できるため、
" p" や " def" というメソッドの呼び出しを行おうとして例外が発生しています。
『スーパークラスに '...' メソッドが定義されていない』
スパークラスに無いメソッドをsuperで呼び出した場合にも発生します。
メソッド名や定義箇所、レシーバの確認をしてください。
undefined method
『'...' という名前のメソッドが for このクラスに定義されていない』
定義されていないメソッドの呼び出しが行われたときに発生します。
使用したメソッドのつづりが間違っていないか、
モジュールメソッドなど、クラス・モジュール名が抜けていないかを確認しましょう。
$game_actor[3].name など s の付け忘れなど。
また、半角スペースを全角で行っている場合などにも発生する場合があります。
ウェブサイトなどからコピペした際には、注意してください。
メソッド名や変数名などにマルチバイト文字も使用できるため、
" p" や " def" というメソッドの呼び出しを行おうとして例外が発生しています。
『スーパークラスに '...' メソッドが定義されていない』
スパークラスに無いメソッドをsuperで呼び出した場合にも発生します。
7.SystemStackError
stack level too deep
スタックレベルが深くなりすぎたときに発生します。
メソッドの呼び出しすぎなんかで発生します。
メソッドの呼び出しがループしてしまっていないか確認しましょう。
また、F12リセットエラーのところを確認してみてください。
スタックレベルが深くなりすぎたときに発生します。
メソッドの呼び出しすぎなんかで発生します。
メソッドの呼び出しがループしてしまっていないか確認しましょう。
また、F12リセットエラーのところを確認してみてください。
8.TypeError
不正な型を使用したときに発生します。
メソッドの引数などで型が間違っていないか確認しましょう。
cannot convert A into B
A can't be coerced into B
no implicit conversion to B from A
数値を入れなければいけないところに、文字列を入れたりなんかすると発生します。
class or module required
クラスもしくはモジュールを入れるべきところに、別のオブジェクトを入れてしまった場合に発生します。
wrong argument type - (expected Module)
モジュールを入れるべき場所に別のオブジェクトを入れたときに発生します。
メソッドの引数などで型が間違っていないか確認しましょう。
cannot convert A into B
A can't be coerced into B
no implicit conversion to B from A
数値を入れなければいけないところに、文字列を入れたりなんかすると発生します。
cannot convert A into B A can't be coerced into B no implicit conversion to B from A指定された値がAクラスなので、Bクラスに変換する処理を加えると回避できます。
class or module required
クラスもしくはモジュールを入れるべきところに、別のオブジェクトを入れてしまった場合に発生します。
"".is_a?(0) # ERROR 0.instance_of?(0) # ERROR "".is_a?(String) # ○エラー行で不正な型を使用している場所を特定して修正してください。
wrong argument type - (expected Module)
モジュールを入れるべき場所に別のオブジェクトを入れたときに発生します。
include "Module" # ERROR obj.extend "Module" # ERROR include Module # ○エラー行で不正な型を使用している場所を特定して修正してください。
9.ZeroDivisionError
divided by 0
0で除算、除余(/, %)を行ったときに発生します。
0で割るという行為の定義が存在しないので例外が発生します。
0で除算しないように処理を修正してください。
ただし、浮動小数点での演算は定義されているため例外は発生しません。
0で除算、除余(/, %)を行ったときに発生します。
0で割るという行為の定義が存在しないので例外が発生します。
0で除算しないように処理を修正してください。
ただし、浮動小数点での演算は定義されているため例外は発生しません。
10.LocalJumpError
unexpected return : unexpected break : unexpected retry
return,break,retryのジャンプ先が見つからないときに発生します。
return,break,retryのジャンプ先が見つからないときに発生します。
11.RuntimeError
プログラム実行時の例外です。
例外を指定しないraiseの呼び出しはこの例外を発生させます。
12.LoadError
No such file to load
requireやloadが失敗したときに発生します。
外部スクリプトなどを読み込む場合などですので、まず起きないでしょう。
requireやloadが失敗したときに発生します。
外部スクリプトなどを読み込む場合などですので、まず起きないでしょう。
13.RGSSError
disposed Bitmap : disposed Sprite : disposed Window
RGSS 組み込みクラスのオブジェクトをdisposeを使用して解放した後、
そのクラスのメソッドを使用して、オブジェクトにアクセスしようとすると発生します。
エラー行と違う場所で解放処理を行っているので、その箇所を見つけ出さなければなりません。
failed create bitmap
Bitmap.new を使用して生成した画像のサイズが大きいときに発生します。
生成する画像の容量が16MBよりも大きくなるとエラーが出るようです。
エラーが出た場合は、描画項目を分割してサイズを小さくしてみてください。
参考までに、横幅 512px の画像の場合の縦幅は 8192px までです。
行で言うと341行かな?
RGSS 組み込みクラスのオブジェクトをdisposeを使用して解放した後、
そのクラスのメソッドを使用して、オブジェクトにアクセスしようとすると発生します。
エラー行と違う場所で解放処理を行っているので、その箇所を見つけ出さなければなりません。
failed create bitmap
Bitmap.new を使用して生成した画像のサイズが大きいときに発生します。
生成する画像の容量が16MBよりも大きくなるとエラーが出るようです。
エラーが出た場合は、描画項目を分割してサイズを小さくしてみてください。
参考までに、横幅 512px の画像の場合の縦幅は 8192px までです。
行で言うと341行かな?