私は予期しない行動を経験しており、調査の焦点となる領域について誰かがガイダンスを手伝ってくれることを望んでいました。
2つのメソッドがあります。1つは基本的にdoubleでゼロ除算テストを実行し、もう1つはextern
アンマネージdllのメソッドを呼び出します。
注: .Netランタイムでは、DoubleをZeroで除算すると、Infinity値が返されます(おもしろいことに、正または負のフレーバーのいずれか)。
私が行っていることの擬似コードは次のようになります。
InfinityTest(); // Returns an Infinity value as expected
DllCall();
InfinityTest(); // Divide by zero error on second call.
の最初の呼び出しInfinityTest()
は、期待どおりに値Infinityを返します。の2番目の呼び出しInfinityTest()
は、予期していなかったゼロ除算例外をスローします。
アップデート
以下の効果的なInfinityTest()
コード。簡潔にするために、try / catch要素などを削除しました。疑似コード要素の詳細に入る権限がありませんDllCall()
、お詫びします。
private double InfinityTest()
{
double a = 1.0;
int b = 0;
return a / b;
}