Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Obecně je dobrou programovací praxí zachytit konkrétní typ výjimky místo použití základního catch příkazu.
Když dojde k výjimce, je předána nahoru po zásobníku a každému bloku catch se dá příležitost ji zpracovat. Pořadí příkazů catch je důležité. Umístěte bloky catch zaměřené na konkrétní výjimky před obecný catch blok, jinak může kompilátor vyhlásit chybu. Správný blok catch je určen porovnáním typu výjimky se jménem výjimky zadaným v bloku catch. Pokud neexistuje žádný konkrétní blok catchu, výjimka je zachycena obecným blokem catch, pokud existuje.
Následující příklad kódu používá try/catch blok k zachycení InvalidCastException. Ukázka vytvoří třídu nazvanou Employee s jednou vlastností, úrovní zaměstnance (Emlevel). Metoda, , PromoteEmployeepřebírá objekt a zvýší úroveň zaměstnance. K InvalidCastException dojde, když je instance DateTime předána metodě 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