Sobes.tech
Junior — Middle

Jaka jest rola operatora throw w bloku catch w obsłudze wyjątków?

sobes.tech AI

Odpowiedź od AI

Operator throw w bloku catch służy do ponownego wyrzucenia bieżącego wyjątku lub wyrzucenia nowego.

Jeśli napiszesz po prostu throw; bez parametrów, wyjątek zostanie ponownie wyrzucony z zachowaniem oryginalnego stosu wywołań. Jest to przydatne, gdy chcesz częściowo obsłużyć wyjątek (np. zalogować go), a następnie przekazać dalej.

Jeśli napiszesz throw new Exception(...), zostanie wyrzucony nowy wyjątek, a stos wywołań zacznie się od tego miejsca.

Przykład ponownego wyrzucenia:

try
{
    // kod
}
catch(Exception ex)
{
    Log(ex.Message);
    throw; // ponownie wyrzucamy ten sam wyjątek
}