問題タブ [overflowexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 小さな配列を作成するメモリ不足とオーバーフローの例外
C# と XNA は初めてです。三角形のグリッドを生成するクラスを作成できました。しかし、問題が 1 つあります。最大 27 ノードの長さの三角形を取得できます。28 で Out of memory 例外をスローし、31 で -overFlow 例外をスローします。
どのようにオーバーフローしたり、メモリ不足になったりするのかわかりません...これらすべてのメモリ値を計算しようとしましたが、非常に小さく見えます。
変数の影響を受けるノードの配列のみです。ノードクラスはそれほど大きくありません:
フロート x; 4 B float y; 4 B float z; 4 B int[] コン; int[6] 4*6=24 B バイトパス。1 B カラー列。32b=4B
三角形を作成するために必要なノードのシーケンス合計は n(n+1)/2 です
28でメモリ不足
28*29/2=406 ノード
合計メモリ:
41*406 = 16646B = 16.26kB
31 でオーバーフロー: 496 ノードは 19.9 kB
「メモリ不足の例外」に関する記事を読みました。構造体のサイズは見た目よりも大きく、メモリ不足は500MBのサイズで発生します...私の小さな三角形がそのような巨大なサイズに達する方法はありません。
これは私のクラス全体です:
c# - 算術演算でオーバーフロー エラーが発生しました c#
こんにちは、C# を使用してアプリケーションを構築し、リモート mysql サーバーに接続しています。
コードは次のとおりです。
次のエラーが表示されます。
"OverflowException は処理されませんでした
算術演算でオーバーフローが発生しました"
ここでは算術演算は使用しません。何か助けて???
.net - OverflowException なしで符号なし整数を符号付き整数に変換する方法
高値の符号なし整数 (最上位ビットを使用する値) を符号付き整数に変換できるようにしたいと考えています。この場合、値が符号付き整数型の最大値より大きくても構いません。ビット値が符号付き整数として表すものに変換したいだけです。つまり、負の数になることが予想されます。
ただし、VB.NET では、CType
操作はそのようには機能しません (または や などの他の変換関数はいずれもCShort
) CInteger
。目的の符号付き型の最大値よりも大きい符号なし値を変換しようとするとOverflowException
、負の数を返すのではなく、がスローされます。例えば:
DirectCast
どちらの型も他方を継承または実装しないため、符号付き型と符号なし型の間で値をキャストするために操作を使用できないことにも言及する価値があります。例えば:
私は自分がやりたいことをする1つの方法を見つけましたが、それは不必要に醜いようです. これが私がそれを機能させる方法です:
私が言ったように、それは機能しますが、VB.NET でそれを行うためのより簡単でクリーンな方法があれば、それが何であるかを知りたいです。
c# - 配列作成式と長い次元の長さ
C# 仕様と配列作成式の部分を読んでいたところです。仕様書には次のように書かれています。
[をちょきちょきと切る]
expression-list の次元の長さの式は、左から右に順番に評価されます。各式の評価に続いて、int、uint、long、ulong のいずれかの型への暗黙的な変換 (§6.1) が実行されます。暗黙的な変換が存在するこのリストの最初の型が選択されます。式の評価または後続の暗黙的な変換によって例外が発生した場合、それ以上の式は評価されず、それ以上のステップは実行されません。
興奮して、うーん、まだ見たことがないと思いました。長い次元の長さを試してみましょう。
Visual Studio は、最初の行を指しているときに次のように言います。
未処理の例外: System.OverflowException: 算術演算でオーバーフローが発生しました。
これは「OutOfMemoryException」ではないことに注意してください。配列作成式を変更して少し小さくすると、次のようになります。
今度は「OutOfMemoryException」を取得します。私は、CLR からの「オブジェクトは 2GB を超えることはできません」という制限全体について知っています。私の質問は、長さが Int32 に変換できなくなったときに、非常に異なる例外 (OverflowException と OutOfMemoryException) が発生するのはなぜですか?
c# - バイト配列 >> をビットシフトできるようにする必要がありますか?
BigInteger がオーバーフロー例外をスローする理由を理解しようとしています。BigInteger を に変換しbyte[]
、例外が発生する場所がわかるまでシフトを繰り返しインクリメントすることで、これを視覚化しようとしました。
- ビットシフト >> a byte[] ができるはずですか、それとも C# ではできませんか?
例外を引き起こすコード
c# - シリアル化での System.OverflowException
Web 応答を解析するためのいくつかのクラスがあります。
私は使用しますDataContractJsonSerializer
:
私は"System.OverflowException"
並んでいます:
/checked コンパイラ オプションはオフです。そしてReadObject
、この例外をスローできません。
しかし、クラスを書き直すとうまくいきます:
これがあいまいな質問であることは理解していますが、何が問題なのか理解できません。どの時点でこの例外をスローできますか?
例外情報を更新:
メッセージ:
内部例外:
ストラックトレース:
Json レスポンス: