OverflowException Klasse

Definition

Die Ausnahme, die ausgelöst wird, wenn ein arithmetischer, Umwandlungs- oder Konvertierungsvorgang in einem überprüften Kontext zu einem Überlauf führt.

public ref class OverflowException : ArithmeticException
public class OverflowException : ArithmeticException
[System.Serializable]
public class OverflowException : ArithmeticException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class OverflowException : ArithmeticException
type OverflowException = class
    inherit ArithmeticException
[<System.Serializable>]
type OverflowException = class
    inherit ArithmeticException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type OverflowException = class
    inherit ArithmeticException
Public Class OverflowException
Inherits ArithmeticException
Vererbung
Vererbung
Attribute

Hinweise

Ein OverflowException wird zur Laufzeit unter den folgenden Bedingungen ausgelöst:

  • Ein arithmetischer Vorgang erzeugt ein Ergebnis, das sich außerhalb des Bereichs des Datentyps befindet, der vom Vorgang zurückgegeben wird. Das folgende Beispiel veranschaulicht die OverflowException, die durch einen Multiplikationsvorgang ausgelöst wird, der die Grenzen des Int32 Typs überläuft.

    int value = 780000000;
    checked {
    try {
       // Square the original value.
       int square = value * value;
       Console.WriteLine("{0} ^ 2 = {1}", value, square);
    }
    catch (OverflowException) {
       double square = Math.Pow(value, 2);
       Console.WriteLine("Exception: {0} > {1:E}.",
                         square, Int32.MaxValue);
    } }
    // The example displays the following output:
    //       Exception: 6.084E+17 > 2.147484E+009.
    
    open Checked
    
    let v = 780000000
    try
       // Square the original value.
       let square = v * v
       printfn $"{v} ^ 2 = {square}"
    with :? OverflowException ->
        let square = float v ** 2
        printfn $"Exception: {square} > {Int32.MaxValue:E}."
    // The example displays the following output:
    //       Exception: 6.084E+17 > 2.147484E+009.
    
    Dim value As Integer = 780000000
    Try
       ' Square the original value.
       Dim square As Integer = value * value 
       Console.WriteLine("{0} ^ 2 = {1}", value, square)
    Catch e As OverflowException
       Dim square As Double = Math.Pow(value, 2)
       Console.WriteLine("Exception: {0} > {1:E}.", _
                         square, Int32.MaxValue)
    End Try
    ' The example displays the following output:
    '       Exception: 6.084E+17 > 2.147484E+009.
    
  • Ein Umwandlungs- oder Konvertierungsvorgang versucht, eine schmale Konvertierung durchzuführen, und der Wert des Quelldatentyps liegt außerhalb des Bereichs des Zieldatentyps. Im folgenden Beispiel wird die OverflowException veranschaulicht, die durch den Versuch ausgelöst wird, einen großen nicht signierten Bytewert in einen signierten Bytewert zu konvertieren.

    byte value = 241;
    checked {
    try {
       sbyte newValue = (sbyte) value;
       Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                         value.GetType().Name, value,
                         newValue.GetType().Name, newValue);
    }
    catch (OverflowException) {
       Console.WriteLine("Exception: {0} > {1}.", value, SByte.MaxValue);
    } }
    // The example displays the following output:
    //       Exception: 241 > 127.
    
    open Checked
    
    let value = 241uy
    try
        let newValue = int8 value
        printfn $"Converted the {value.GetType().Name} value {value} to the {newValue.GetType().Name} value {newValue}."
    with :? OverflowException ->
        printfn $"Exception: {value} > {SByte.MaxValue}."
    // The example displays the following output:
    //       Exception: 241 > 127.
    
    Dim value As Byte = 241
    Try
       Dim newValue As SByte = (CSByte(value))
       Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.", _
                         value.GetType().Name, value, _
                         newValue.GetType().Name, newValue)
    Catch e As OverflowException
       Console.WriteLine("Exception: {0} > {1}.", value, SByte.MaxValue)
    End Try                            
    ' The example displays the following output:
    '       Exception: 241 > 127.
    

In jedem Fall ist das Ergebnis des Vorgangs ein Wert, der kleiner als die MinValue Eigenschaft oder größer als die MaxValue Eigenschaft des Datentyps ist, der aus dem Vorgang resultiert.

Damit der arithmetische, Umwandlungs- oder Konvertierungsvorgang einen OverflowExceptionauslöst, muss der Vorgang in einem überprüften Kontext auftreten. Standardmäßig werden arithmetische Vorgänge und Überläufe in Visual Basic überprüft; in C# und F# sind sie nicht. Wenn der Vorgang in einem deaktivierten Kontext auftritt, wird das Ergebnis abgeschnitten, indem alle Bits in hoher Reihenfolge verworfen werden, die nicht in den Zieltyp passen. Im folgenden Beispiel wird eine solche nicht aktivierte Konvertierung in C# oder F# veranschaulicht. Es wiederholt das vorherige Beispiel in einem deaktivierten Kontext.

byte value = 241;
try {
   sbyte newValue = (sbyte) value;
   Console.WriteLine("Converted the {0} value {1} to the {2} value {3}.",
                     value.GetType().Name, value,
                     newValue.GetType().Name, newValue);
}
catch (OverflowException) {
   Console.WriteLine("Exception: {0} > {1}.", value, SByte.MaxValue);
}
// The example displays the following output:
//       Converted the Byte value 241 to the SByte value -15.
let value = 241uy
try
    let newValue = int8 value
    printfn $"Converted the {value.GetType().Name} value {value} to the {newValue.GetType().Name} value {newValue}."
with :? OverflowException ->
    printfn $"Exception: {value} > {SByte.MaxValue}."
// The example displays the following output:
//       Converted the Byte value 241 to the SByte value -15.

Die folgenden MSIL-Anweisungen (Microsoft Intermediate Language) lösen eine OverflowExceptionaus:

  • add.ovf. <signierten>

  • conv.ovf. <zum Eingeben von>

  • conv.ovf. <eingeben>.un

  • mul.ovf. <Typ>

  • sub.ovf. <Typ>

  • newarr

OverflowException verwendet die HRESULT-COR_E_OVERFLOW, die den Wert 0x80131516 hat.

Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz von OverflowExceptionfinden Sie in den OverflowException-Konstruktoren.

Konstruktoren

OverflowException()

Initialisiert eine neue Instanz der OverflowException Klasse.

OverflowException(SerializationInfo, StreamingContext)
Veraltet.

Initialisiert eine neue Instanz der OverflowException Klasse mit serialisierten Daten.

OverflowException(String)

Initialisiert eine neue Instanz der OverflowException Klasse mit einer angegebenen Fehlermeldung.

OverflowException(String, Exception)

Initialisiert eine neue Instanz der OverflowException Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die die Ursache dieser Ausnahme ist.

Eigenschaften

Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen.

(Geerbt von Exception)
HelpLink

Dient zum Abrufen oder Festlegen eines Links zur Hilfedatei, die dieser Ausnahme zugeordnet ist.

(Geerbt von Exception)
HResult

Dient zum Abrufen oder Festlegen von HRESULT, einem codierten numerischen Wert, der einer bestimmten Ausnahme zugewiesen ist.

(Geerbt von Exception)
InnerException

Ruft die Exception Instanz ab, die die aktuelle Ausnahme verursacht hat.

(Geerbt von Exception)
Message

Ruft eine Nachricht ab, die die aktuelle Ausnahme beschreibt.

(Geerbt von Exception)
Source

Dient zum Abrufen oder Festlegen des Namens der Anwendung oder des Objekts, das den Fehler verursacht.

(Geerbt von Exception)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames im Aufrufstapel ab.

(Geerbt von Exception)
TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.

(Geerbt von Exception)

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetBaseException()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die Exception zurückgegeben, die die Ursache einer oder mehrerer nachfolgenden Ausnahmen ist.

(Geerbt von Exception)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)
Veraltet.

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird die SerializationInfo mit Informationen zur Ausnahme festgelegt.

(Geerbt von Exception)
GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.

(Geerbt von Exception)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Erstellt und gibt eine Zeichenfolgendarstellung der aktuellen Ausnahme zurück.

(Geerbt von Exception)

Ereignisse

SerializeObjectState
Veraltet.

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmestatusobjekt zu erstellen, das serialisierte Daten zu der Ausnahme enthält.

(Geerbt von Exception)

Gilt für:

Weitere Informationen