1

通常は正常に機能し、しばらく本番環境にあるコードをデバッグしようとしていますが、特定のケースの実行に関連するエラーがいくつかあります。

「Guarantee」というクラスと、そのクラスの変数/オブジェクト「myDem」があります。このクラスには、「NumberOfGuaranteeDays」という関連関数があります。以下の最初の画像は、「myDem」でのこの関数呼び出しに割り当てられている「numRows」という名前の Long 変数を示しています。この割り当てが行われると、つまり "NumberOfGuaranteeDays" 関数が呼び出されると、オーバーフロー エラーが発生します。

ルート オーバーフロー エラーの原因となる高レベルの関数呼び出し。 ご了承ください

関数呼び出し「NumberOfGuaranteeDays」が実行された後、これは多くのサブ関数自体を含むかなり複雑な呼び出しであり、クラスはそれ自体を終了しようとし、値 (整数である日数... この場合は32561 です)。エラーが発生するのは、この終了ステップと値 32561 への「numRows」の割り当て中です。

クラスコールの終了。 オーバーフロー エラー メッセージが返される前に機能する最後の手順。

ここでは、コード内の次のステップでエラー メッセージが返されることを簡単に示します。

終了サブルーチンが完了した直後に表示されるエラー メッセージ

最後に、"numRows" に割り当てられた値が 32561 であり、Long に適切に割り当てることができる Integer 型であることを "証明" したかったのです。ウィンドウのウォッチ部分の右端にある値「res」は、「NumberOfGuaranteeDays」呼び出しから返された値であり、変数「numRows」に割り当てられます。

ウィンドウのウォッチ部分の右端にある値を見てください。

私が知る限り、クラッシュが発生する理由として 2 つの可能性しかありません。

  1. クラスを終了しようとしてエラーが発生しました。ただし、これが「オーバーフロー」エラーにつながる可能性があることを理解していません。
  2. 「NumberOfGuaranteeDays」から計算された値の変数「numRows」への割り当てにエラーがあります。この種の代入では、オーバーフローが発生する可能性がありますが、この場合はそうではありません。32561 に設定された「res」整数である「NumberOfGuaranteeDays」からの戻り値は、Long である「numRows」に割り当てられます。

ですから、私が想像できるこれらの可能性はどちらも意味をなさないので、私には見えない別の可能性があるに違いないと思います. 助けてくれてありがとう!

手順を理解するために重要なことの多くは、デバッグ段階のどこにいるかの「証拠」を見ることであるため、コードとして記述する代わりに、切り取りと貼り付けを行った画像を挿入することにしました。実際のコード スニペットが役立つ場合は、お知らせください。

        Thank you!
               Mike
4

0 に答える 0