Udostępnij za pośrednictwem


OverflowException Klasa

Definicja

Wyjątek zgłaszany w przypadku operacji arytmetycznej, rzutowania lub konwersji w sprawdzonym kontekście powoduje przepełnienie.

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
Dziedziczenie
Dziedziczenie
Atrybuty

Uwagi

OverflowException jest zgłaszany w czasie wykonywania w następujących warunkach:

  • Operacja arytmetyczna generuje wynik, który znajduje się poza zakresem typu danych zwracanego przez operację. Poniższy przykład ilustruje OverflowException, który jest zgłaszany przez operację mnożenia, która przepełnia granice typu Int32.

    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.
    
  • Operacja rzutowania lub konwersji próbuje wykonać konwersję zawężającą, a wartość typu danych źródłowych znajduje się poza zakresem docelowego typu danych. Poniższy przykład ilustruje OverflowException, który jest zgłaszany przez próbę przekonwertowania dużej niepodpisanej wartości bajtu na wartość podpisaną bajt.

    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.
    

W każdym przypadku wynikiem operacji jest wartość mniejsza niż właściwość MinValue lub większa niż właściwość MaxValue typu danych, który wynika z operacji.

W przypadku operacji arytmetycznej, rzutowania lub konwersji w celu wyrzucenia OverflowExceptionoperacja musi zostać wykonana w kontekście sprawdzonym. Domyślnie sprawdzane są operacje arytmetyczne i przepełnienia w Visual Basic; w językach C# i F# nie są. Jeśli operacja występuje w nieznakowanym kontekście, wynik zostanie obcięty przez odrzucenie wszystkich bitów o wysokiej kolejności, które nie mieszczą się w typie docelowym. Poniższy przykład ilustruje taką niezaznaczoną konwersję w języku C# lub F#. Powtarza poprzedni przykład w nieznakowanym kontekście.

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.

Następujące instrukcje dotyczące języka Microsoft Intermediate Language (MSIL) zgłaszają OverflowException:

  • add.ovf. <podpisane>

  • conv.ovf. <, aby wpisać>

  • conv.ovf. <do wpisywania>.un

  • mul.ovf. <typ>

  • sub.ovf. <typ>

  • newarr

OverflowException używa COR_E_OVERFLOW HRESULT, która ma wartość 0x80131516.

Aby uzyskać listę początkowych wartości właściwości dla wystąpienia OverflowException, zobacz konstruktory OverflowException.

Konstruktory

OverflowException()

Inicjuje nowe wystąpienie klasy OverflowException.

OverflowException(SerializationInfo, StreamingContext)
Przestarzałe.

Inicjuje nowe wystąpienie klasy OverflowException z serializowanymi danymi.

OverflowException(String)

Inicjuje nowe wystąpienie klasy OverflowException z określonym komunikatem o błędzie.

OverflowException(String, Exception)

Inicjuje nowe wystąpienie klasy OverflowException z określonym komunikatem o błędzie i odwołaniem do wyjątku wewnętrznego, który jest przyczyną tego wyjątku.

Właściwości

Data

Pobiera kolekcję par klucz/wartość, które zapewniają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku.

(Odziedziczone po Exception)
HelpLink

Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem.

(Odziedziczone po Exception)
HResult

Pobiera lub ustawia HRESULT, zakodowaną wartość liczbową przypisaną do określonego wyjątku.

(Odziedziczone po Exception)
InnerException

Pobiera wystąpienie Exception, które spowodowało bieżący wyjątek.

(Odziedziczone po Exception)
Message

Pobiera komunikat opisujący bieżący wyjątek.

(Odziedziczone po Exception)
Source

Pobiera lub ustawia nazwę aplikacji lub obiektu, który powoduje błąd.

(Odziedziczone po Exception)
StackTrace

Pobiera reprezentację ciągu natychmiastowych ramek na stosie wywołań.

(Odziedziczone po Exception)
TargetSite

Pobiera metodę, która zgłasza bieżący wyjątek.

(Odziedziczone po Exception)

Metody

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(Odziedziczone po Object)
GetBaseException()

Po zastąpieniu w klasie pochodnej zwraca Exception, która jest główną przyczyną co najmniej jednego kolejnego wyjątku.

(Odziedziczone po Exception)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetObjectData(SerializationInfo, StreamingContext)
Przestarzałe.

Po zastąpieniu w klasie pochodnej ustawia SerializationInfo z informacjami o wyjątku.

(Odziedziczone po Exception)
GetType()

Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia.

(Odziedziczone po Exception)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ToString()

Tworzy i zwraca reprezentację ciągu bieżącego wyjątku.

(Odziedziczone po Exception)

Zdarzenia

SerializeObjectState
Przestarzałe.

Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku zawierającego serializowane dane dotyczące wyjątku.

(Odziedziczone po Exception)

Dotyczy

Zobacz też