OverflowException Classe

Definizione

Eccezione generata quando un'operazione aritmetica, di cast o conversione in un contesto controllato genera un overflow.

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
Ereditarietà
Ereditarietà
Attributi

Commenti

Viene OverflowException generata in fase di esecuzione in base alle condizioni seguenti:

  • Un'operazione aritmetica produce un risultato esterno all'intervallo del tipo di dati restituito dall'operazione. Nell'esempio seguente viene illustrato l'oggetto OverflowException generato da un'operazione di moltiplicazione che esegue l'overflow dei limiti del Int32 tipo.

    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.
    
  • Un'operazione di cast o conversione tenta di eseguire una conversione di tipo narrowing e il valore del tipo di dati di origine non rientra nell'intervallo del tipo di dati di destinazione. Nell'esempio seguente viene illustrato l'oggetto OverflowException generato dal tentativo di convertire un valore di byte senza segno di grandi dimensioni in un valore di byte con segno.

    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 ogni caso, il risultato dell'operazione è un valore minore della MinValue proprietà o maggiore MaxValue della proprietà del tipo di dati risultante dall'operazione.

Affinché l'operazione aritmetica, di cast o conversione generi un'operazione OverflowException, l'operazione deve essere eseguita in un contesto controllato. Per impostazione predefinita, le operazioni aritmetiche e gli overflow in Visual Basic vengono controllate; in C# e F#, non lo sono. Se l'operazione si verifica in un contesto non selezionato, il risultato viene troncato rimuovendo eventuali bit di ordine elevato che non rientrano nel tipo di destinazione. L'esempio seguente illustra una conversione deselezionata in C# o F#. Ripete l'esempio precedente in un contesto deselezionato.

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.

Le istruzioni MSIL (Intermediate Language) seguenti Microsoft generano un OverflowException:

  • add.ovf. <Firmato>

  • conv.ovf. <da digitare>

  • conv.ovf. <da digitare>.un

  • mul.ovf. <digitare>

  • sub.ovf. <digitare>

  • newarr

OverflowException usa il COR_E_OVERFLOW HRESULT, che ha il valore 0x80131516.

Per un elenco dei valori iniziali delle proprietà per un'istanza di OverflowException, consultare i costruttori di OverflowException.

Costruttori

Nome Descrizione
OverflowException()

Inizializza una nuova istanza della classe OverflowException.

OverflowException(SerializationInfo, StreamingContext)

Inizializza una nuova istanza della classe OverflowException con dati serializzati.

OverflowException(String, Exception)

Inizializza una nuova istanza della classe OverflowException con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa di questa eccezione.

OverflowException(String)

Inizializza una nuova istanza della OverflowException classe con un messaggio di errore specificato.

Proprietà

Nome Descrizione
Data

Ottiene una raccolta di coppie chiave/valore che forniscono informazioni aggiuntive definite dall'utente sull'eccezione.

(Ereditato da Exception)
HelpLink

Ottiene o imposta un collegamento al file della Guida associato a questa eccezione.

(Ereditato da Exception)
HResult

Ottiene o imposta HRESULT, valore numerico codificato assegnato a un'eccezione specifica.

(Ereditato da Exception)
InnerException

Ottiene l'istanza Exception che ha causato l'eccezione corrente.

(Ereditato da Exception)
Message

Ottiene un messaggio che descrive l'eccezione corrente.

(Ereditato da Exception)
Source

Ottiene o imposta il nome dell'applicazione o dell'oggetto che causa l'errore.

(Ereditato da Exception)
StackTrace

Ottiene una rappresentazione di stringa dei fotogrammi immediati nello stack di chiamate.

(Ereditato da Exception)
TargetSite

Ottiene il metodo che genera l'eccezione corrente.

(Ereditato da Exception)

Metodi

Nome Descrizione
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetBaseException()

Quando sottoposto a override in una classe derivata, restituisce l'oggetto Exception che rappresenta la causa radice di una o più eccezioni successive.

(Ereditato da Exception)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetObjectData(SerializationInfo, StreamingContext)

In caso di override in una classe derivata, imposta con le SerializationInfo informazioni sull'eccezione.

(Ereditato da Exception)
GetType()

Ottiene il tipo di runtime dell'istanza corrente.

(Ereditato da Exception)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.

(Ereditato da Exception)

Eventi

Nome Descrizione
SerializeObjectState

Si verifica quando viene serializzata un'eccezione per creare un oggetto stato dell'eccezione contenente dati serializzati sull'eccezione.

(Ereditato da Exception)

Si applica a

Vedi anche