Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
En règle générale, c'est une bonne pratique de programmation de gérer un type spécifique d'exception plutôt que d'utiliser une instruction catch
basique.
Lorsqu’une exception se produit, elle est transmise à la pile et chaque bloc catch a la possibilité de le gérer. L’ordre des instructions catch est important. Placez des blocs catch ciblés sur des exceptions spécifiques avant un bloc catch d’exception général ou le compilateur peut émettre une erreur. Le bloc catch correct est déterminé par la correspondance entre le type de l'exception et le nom de l'exception spécifiée dans le bloc catch. S'il n'existe aucun bloc de capture spécifique, l'exception est interceptée par un bloc de capture général, si l'un existe.
L’exemple de code suivant utilise un bloc try
/catch
pour intercepter un InvalidCastException. L’exemple crée une classe appelée Employee
avec une propriété unique, un niveau employé (Emlevel
). Une méthode, PromoteEmployee
, prend un objet et incrémente le niveau de l'employé. Un InvalidCastException événement se produit lorsqu’une DateTime instance est passée à la PromoteEmployee
méthode.
using System;
public class Employee
{
//Create employee level property.
public int Emlevel
{
get
{
return(emlevel);
}
set
{
emlevel = value;
}
}
private int emlevel = 0;
}
public class Ex13
{
public static void PromoteEmployee(Object emp)
{
// Cast object to Employee.
var e = (Employee) emp;
// Increment employee level.
e.Emlevel = e.Emlevel + 1;
}
static void Main()
{
try
{
Object o = new Employee();
DateTime newYears = new DateTime(2001, 1, 1);
// Promote the new employee.
PromoteEmployee(o);
// Promote DateTime; results in InvalidCastException as newYears is not an employee instance.
PromoteEmployee(newYears);
}
catch (InvalidCastException e)
{
Console.WriteLine("Error passing data to PromoteEmployee method. " + e.Message);
}
}
}
Public Class Employee
'Create employee level property.
Public Property Emlevel As Integer
Get
Return emlevelValue
End Get
Set
emlevelValue = Value
End Set
End Property
Private emlevelValue As Integer = 0
End Class
Public Class Ex13
Public Shared Sub PromoteEmployee(emp As Object)
' Cast object to Employee.
Dim e As Employee = CType(emp, Employee)
' Increment employee level.
e.Emlevel = e.Emlevel + 1
End Sub
Public Shared Sub Main()
Try
Dim o As Object = New Employee()
Dim newYears As New DateTime(2001, 1, 1)
' Promote the new employee.
PromoteEmployee(o)
' Promote DateTime; results in InvalidCastException as newYears is not an employee instance.
PromoteEmployee(newYears)
Catch e As InvalidCastException
Console.WriteLine("Error passing data to PromoteEmployee method. " + e.Message)
End Try
End Sub
End Class