OverflowException Klasa
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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.
C#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.
C#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.
Overflow |
Inicjuje nowe wystąpienie klasy OverflowException. |
Overflow |
Przestarzałe.
Inicjuje nowe wystąpienie klasy OverflowException z serializowanymi danymi. |
Overflow |
Inicjuje nowe wystąpienie klasy OverflowException z określonym komunikatem o błędzie. |
Overflow |
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. |
Data |
Pobiera kolekcję par klucz/wartość, które zapewniają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku. (Odziedziczone po Exception) |
Help |
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) |
Inner |
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) |
Stack |
Pobiera reprezentację ciągu natychmiastowych ramek na stosie wywołań. (Odziedziczone po Exception) |
Target |
Pobiera metodę, która zgłasza bieżący wyjątek. (Odziedziczone po Exception) |
Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
Get |
Po zastąpieniu w klasie pochodnej zwraca Exception, która jest główną przyczyną co najmniej jednego kolejnego wyjątku. (Odziedziczone po Exception) |
Get |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
Get |
Przestarzałe.
Po zastąpieniu w klasie pochodnej ustawia SerializationInfo z informacjami o wyjątku. (Odziedziczone po Exception) |
Get |
Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia. (Odziedziczone po Exception) |
Memberwise |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
To |
Tworzy i zwraca reprezentację ciągu bieżącego wyjątku. (Odziedziczone po Exception) |
Serialize |
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) |
Produkt | Wersje |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1 |
UWP | 10.0 |
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: