Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I allmänhet är det bra programmeringspraxis att fånga en viss typ av undantag i stället för att använda en grundläggande catch instruktion.
När ett undantag inträffar skickas det upp i stacken och varje catchblock får möjlighet att hantera det. Ordningen på catch-satser är viktig. Placera catch-block som är riktade mot specifika typer av undantag före ett allmänt undantagsfångstblock, annars kan kompilatorn generera ett felmeddelande. Rätt fångstblock bestäms genom att matcha undantagstypen med undantagsnamnet som anges i fångstblocket. Om det inte finns något specifikt catch-block fångas undantaget av ett allmänt fångstblock, om det finns ett sådant.
I följande kodexempel används ett try/catch block för att fånga en .InvalidCastException Exemplet skapar en klass med namnet Employee med en enda egenskap, personalnivå (Emlevel). En metod, PromoteEmployee, tar ett objekt och ökar medarbetarnivån. När en instans av InvalidCastException skickas till metoden DateTime, inträffar ett PromoteEmployee.
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