OverflowException Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 generata una OverflowException 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 illustrata la OverflowException generata da un'operazione di moltiplicazione che esegue l'overflow dei limiti del tipo di 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.
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 il 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 proprietà MinValue
o maggiore della proprietà MaxValue
del tipo di dati risultante dall'operazione.
Affinché l'operazione aritmetica, di cast o conversione generi un OverflowException, l'operazione deve verificarsi in un contesto controllato. Per impostazione predefinita, vengono controllate le operazioni aritmetiche e gli overflow in Visual Basic; 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 (Microsoft Intermediate Language) seguenti generano un OverflowException:
add.ovf.
< > firmatoconv.ovf.
<da digitare>conv.ovf.
<da digitare>.un
mul.ovf.
<tipo>sub.ovf.
<tipo>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, vedere i costruttori OverflowException.
Costruttori
OverflowException() |
Inizializza una nuova istanza della classe OverflowException. |
OverflowException(SerializationInfo, StreamingContext) |
Obsoleti.
Inizializza una nuova istanza della classe OverflowException con dati serializzati. |
OverflowException(String) |
Inizializza una nuova istanza della classe OverflowException con un messaggio di errore specificato. |
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. |
Proprietà
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 di 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
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetBaseException() |
Quando sottoposto a override in una classe derivata, restituisce il 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) |
Obsoleti.
In caso di override in una classe derivata, imposta il SerializationInfo con 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
SerializeObjectState |
Obsoleti.
Si verifica quando viene serializzata un'eccezione per creare un oggetto stato dell'eccezione contenente dati serializzati sull'eccezione. (Ereditato da Exception) |