Es wurde versucht, eine Ausnahme auszulösen, wenn objFileStream.Length
eine höhere Zahl zurückgibt als int.MaxValue
(2147483647), weil Length
auf Stream
long
type zurückgibt (ich nehme an, dass objFileStream
is stream ist). In .net ist der arithmetische Überlauf standardmäßig nicht aktiviert.
Nächster Code demonstriert diesen Fall:
%Vor%Nach einer kurzen Analyse können Sie die nächste Anweisung reduzieren
%Vor%bis
%Vor% Persönliche Empfehlung: Ich sehe nicht, wie OverflowException
Ihnen hier helfen wird. Math.Min
wird sicherstellen, dass das Array nicht länger als 32768
-Elemente erstellt wird. Wenn Sie catch
irgendwo in der aufrufenden Methode versuchen, können Sie nicht ableiten, was der Grund für diesen Fehler ist, er kann von irgendwo im aufgerufenen Stapel kommen.
Sie müssen wahrscheinlich nicht immer ein Array der Größe 32768 zuweisen, wie Sie es vorgeschlagen haben
%Vor%, aber verwenden Sie Math.Min
, um Speicherplatz zu sparen, wenn objFileStream.Length
eine kleine Zahl zurückgibt