OverflowException Classe

Définition

L’exception levée lorsqu’une opération arithmétique, de cast ou de conversion dans un contexte vérifié entraîne un dépassement de capacité.

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
Héritage
Héritage
Attributs

Remarques

Une OverflowException est levée au moment de l’exécution dans les conditions suivantes :

  • Une opération arithmétique produit un résultat qui se trouve en dehors de la plage du type de données retourné par l’opération. L’exemple suivant illustre la OverflowException levée par une opération de multiplication qui dépasse les limites du type 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.
    
  • Une opération de conversion ou de conversion tente d’effectuer une conversion étroite, et la valeur du type de données source est en dehors de la plage du type de données cible. L’exemple suivant illustre la OverflowException levée par la tentative de conversion d’une valeur d’octet non signée volumineuse en valeur d’octet signé.

    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.
    

Dans chaque cas, le résultat de l’opération est une valeur inférieure à la propriété MinValue ou supérieure à la propriété MaxValue du type de données qui résulte de l’opération.

Pour que l’opération arithmétique, de conversion ou de conversion lève une OverflowException, l’opération doit se produire dans un contexte vérifié. Par défaut, les opérations arithmétiques et les dépassements de capacité en Visual Basic sont vérifiés ; en C# et F#, ce n’est pas le cas. Si l’opération se produit dans un contexte non vérifié, le résultat est tronqué en ignorant les bits de commande élevé qui ne correspondent pas au type de destination. L’exemple suivant illustre une conversion non vérifiée en C# ou F#. Il répète l’exemple précédent dans un contexte non vérifié.

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.

Les instructions MSIL (Microsoft Intermediate Language) suivantes lèvent une OverflowException:

  • add.ovf. < > signé

  • conv.ovf. <de taper>

  • conv.ovf. <de taper>.un

  • mul.ovf. <type>

  • sub.ovf. <type>

  • newarr

OverflowException utilise le COR_E_OVERFLOW HRESULT, qui a la valeur 0x80131516.

Pour obtenir la liste des valeurs de propriété initiales d’une instance de OverflowException, consultez les constructeurs OverflowException.

Constructeurs

OverflowException()

Initialise une nouvelle instance de la classe OverflowException.

OverflowException(SerializationInfo, StreamingContext)
Obsolète.

Initialise une nouvelle instance de la classe OverflowException avec des données sérialisées.

OverflowException(String)

Initialise une nouvelle instance de la classe OverflowException avec un message d’erreur spécifié.

OverflowException(String, Exception)

Initialise une nouvelle instance de la classe OverflowException avec un message d’erreur spécifié et une référence à l’exception interne qui est la cause de cette exception.

Propriétés

Data

Obtient une collection de paires clé/valeur qui fournissent des informations supplémentaires définies par l’utilisateur sur l’exception.

(Hérité de Exception)
HelpLink

Obtient ou définit un lien vers le fichier d’aide associé à cette exception.

(Hérité de Exception)
HResult

Obtient ou définit HRESULT, valeur numérique codée affectée à une exception spécifique.

(Hérité de Exception)
InnerException

Obtient l’instance Exception qui a provoqué l’exception actuelle.

(Hérité de Exception)
Message

Obtient un message qui décrit l’exception actuelle.

(Hérité de Exception)
Source

Obtient ou définit le nom de l’application ou de l’objet qui provoque l’erreur.

(Hérité de Exception)
StackTrace

Obtient une représentation sous forme de chaîne des images immédiates sur la pile des appels.

(Hérité de Exception)
TargetSite

Obtient la méthode qui lève l’exception actuelle.

(Hérité de Exception)

Méthodes

Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetBaseException()

En cas de substitution dans une classe dérivée, retourne la Exception qui est la cause racine d’une ou plusieurs exceptions ultérieures.

(Hérité de Exception)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsolète.

En cas de substitution dans une classe dérivée, définit l'SerializationInfo avec des informations sur l’exception.

(Hérité de Exception)
GetType()

Obtient le type d’exécution de l’instance actuelle.

(Hérité de Exception)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Crée et retourne une représentation sous forme de chaîne de l’exception actuelle.

(Hérité de Exception)

Événements

SerializeObjectState
Obsolète.

Se produit lorsqu’une exception est sérialisée pour créer un objet d’état d’exception qui contient des données sérialisées sur l’exception.

(Hérité de Exception)

S’applique à

Voir aussi