appendix:エラーのお話

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
appendix:エラーのお話 [2024/11/05 13:14]
fumble
appendix:エラーのお話 [2024/11/06 18:54] (現在)
fumble
行 27: 行 27:
  
 ===エラー(例外)の種類=== ===エラー(例外)の種類===
-何がまずかったのかを表しているためヒントになることが多いですが、よくある例外だと「まぁそうだろうね」ぐらいでしかない場合も。\\+何がまずかったのかを表しているためヒントになることが多いですが、よくある例外だと「またいつものか・・・」ぐらいでしかない場合も。\\
 ==よくある例外== ==よくある例外==
   * NullReferenceException   * NullReferenceException
- いわゆる「ぬるぽ」本来あるべきもの、本来取得できるものなどがない状態でそれを操作した場合など。\\ +いわゆる「ぬるぽ」本来あるべきもの、本来取得できるものなどがない状態でそれを操作した場合など。\\ 
- ほとんど場合、操作するこが問題ではなくあるべきものがない、取得できるはずのものが取得できてないないことが問題。\\ +nullが専門用語なで一般の人にはnullを参照した?どういう意味?ってな。\\ 
- 直前にファイルが読めてないとか出ている場合はおそらくそれが原因。\\+の「ぬるぽ」は「ぬるぽ」した処理が問題ではなく((エラーを適切に処理していないという意味では問題かもしれないが。))あるべきものがない、取得できるはずのものが取得できてないないことが問題。\\ 
 +直前にファイルが読めてないとか出ている場合はおそらくそれが原因。\\ 
 +よくあるのはDLCの色変えMod等でDLCを持ってなくてModelが無いとか。\\
   * FileNotFoundException   * FileNotFoundException
- 名前通りでファイルが見つからない場合に発生する。\\ +名前通りでファイルが見つからない場合に発生する。\\ 
- ただしデータファイルに限らずDLLなどがない場合もこれになる場合があるので要注意。\\ +ただしデータファイルに限らずDLLなどがない場合もこれになる場合があるので要注意。\\ 
-  * MissingFieldException +DLLの場合はABを参照していて、BがCを参照している用な状態で、CいとA処理たりする。\\
- 本来あるはずものがない場合。((ある型にあるべきフィールド場合。))\\ +
- 非常によくあ"TBody.goSlot"がないといわれるもの、COM3D2とCOM3D2.5この部分の扱いが変わっており、COM3D2用のプラグインをCOM3D2.5に入れたりすると発生する。\\+
   * TypeLoadException   * TypeLoadException
- これもあるはずのものがない場合。((ある型がない場合。))\\ +本来あるはずのType(型)((専門用語「型(かた)」例えばMaid型なら、メイドさんを表すための定義))、がない場合。\\ 
- これも同じで"Slot"がないよ!って言われるのCOM3D2.5用プラグインをCOM3D2に入れた場合な\\+  * MissingFieldException 
 +これもあるはずのField(フィールド)がない場合。((Fieldも専門用語、型にある値を格納する箇所。例えばさっのメイドさんの例であれば名前とか。(実際は入れ子にっててMaid.m_Status.firstName_) ))\\ 
 + 
 +非常によくあるのが"TBody.goSlot"がないといわれる、COM3D2とCOM3D2.5でこの部分の扱いが変わっており、COM3D2プラグインをCOM3D2.5に入れたりすると発生する。\\ 
 +これが出る場合は、COM3D2版とCOM3D2.5版の取り違えとか、オダメのバージョンがプラグインの想定するバージョン((バージョンアップで追加されたものが無いとか))でいかあたりを確認する
  
 ===スタックトレース=== ===スタックトレース===
 例外が発生した箇所までにどういった処理が呼び出されているかを示したもの。\\ 例外が発生した箇所までにどういった処理が呼び出されているかを示したもの。\\
 最初の行(一番上の行)が最後に処理された箇所、つまり例外が発生した箇所です。\\ 最初の行(一番上の行)が最後に処理された箇所、つまり例外が発生した箇所です。\\
-ただ、ここに問題があると言うわけではありません。\\ + 
-例えば渡されたメイドさんを××するという処理だとして、メイドさんが渡されなかった場合はここでメイドさんがいないんじゃぁ例外((おそらくNullReferenceException、チェックして例外を起こしたならArgumentNullExceptionとか。))が発生しますが、その原因はメイドさんを渡さなかった直前の処理です。\\+ただ、ここに問題があると言うわけではなく、例えば渡されたメイドさんを××するという処理だとして、メイドさんが渡されなかった場合はここでメイドさんがいないんじゃぁ例外((おそらくNullReferenceException、チェックして例外を起こしたならArgumentNullExceptionとか。))が発生しますが、その原因はメイドさんを渡さなかった直前の処理です。\\
 その直前の処理もその前の処理が原因かもしれないのでどの処理が悪いかは単純に判断出来ません。\\ その直前の処理もその前の処理が原因かもしれないのでどの処理が悪いかは単純に判断出来ません。\\
 ただし、エラー発生に至るまでの処理がわかるので、その処理を行ったプラグインがぁゃιぃと言うような見当を付けることは出来ます。\\ ただし、エラー発生に至るまでの処理がわかるので、その処理を行ったプラグインがぁゃιぃと言うような見当を付けることは出来ます。\\
 +
 +例外発生時にスタックトレースを出力せずに「エラー」とかだけ出すプラグインとかがあると、ログからエラー箇所を特定するのが困難に。\\
 +(環境を考慮したスタックトレースプラグイン((メイドいぢりのUnityログを有効にしても同様の効果あり。))を入れると、Unityのログ出力の際のスタックトレースを出力するので原因箇所が特定出来るかも?)
  
 ===バージョン不一致=== ===バージョン不一致===
  • appendix/エラーのお話.1730780077.txt.gz
  • 最終更新: 2024/11/05 13:14
  • by fumble