Różnica między throw a catch

Odpowiedz Nowy wątek
2017-06-15 14:13
Wybitny Wąż
0

Jaka jest różnica między throw i catch ? Jak używam catch to wykonywanie programu się kończy, natomiast przy catchu dalsza część programu się wykona. Czy są jeszcze jakieś różnice ?

Pozostało 580 znaków

2017-06-15 14:29
0

throw "rzucasz" wyjątek, catch go "łapiesz" tak, aby program sam obsłużył błąd zamiast wywalać aplikację.

Dla przykładu otwieranie plików:

FileStream file;
try
{
    // Tu kod który może wywalić wyjątek
    file = File.Open("[Ścieżka Do Pliku]", FileMode.Open)
    // W tym momencie, gdy plik nie istnieje metoda Open z klasy File robi
    // throw IOException z odpowiednimi kodami, wiadomościami itp.
}
catch (IOException ex) // A tu obsługujemy wyjątek
{
    MessageBox.Show("Błąd: " + ex.Message);
}
edytowany 1x, ostatnio: atmal, 2017-06-15 14:34

Pozostało 580 znaków

2017-06-15 16:18
0

Różnica jest jak katapulta a spadochron z miejscem do lądowania.
Spróbuj wyrzucić wyjątek i go nie łap;)

W ramach nauki wyrzucić wyjątek, zrób jeden lub kilka rethrow i obsłuż wyżej.

P

Pozostało 580 znaków

2017-06-19 09:50
0

Throw i catch służą do obsługi wyjątków. Wyjątek - czyli wyjątkowa sytuacja, coś, czego program się nie spodziewał. Np. będziesz chciał zapisać plik na dysku, ale okaże się, że nie masz uprawnień do takiego zapisu.

Teraz tak. Jeśli pytasz użytkownika o wiek, a on Ci napisze: "dwadzieścia dwa" albo "Krzysztof Ibisz", to można to potraktować jako wyjątkową sytuację, ale nie do końca. Bo w tym momencie możesz sprawdzić, czy użytkownik podał sensowną liczbę, czy nie. Po prostu za pomocą if. I jeśli Ci wyjdzie, że użytkownik wpisał głupoty, to po prostu pytasz go jeszcze raz. Czyli w tym przypadku wiesz, co zrobić, gdy dostaniesz dane, których się nie spodziewasz - pytasz jeszcze raz. Ale są sytuacje, w których nie wiesz, co zrobić dalej. Wtedy rzucasz wyjątek za pomocą throw.

Gdzieś w aplikacji powinieneś ten wyjątek łapać - za pomocą catch. Tak jak pokazał atmal.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0