Mowa o wyjątkach...
Zwykła obsługa błędów w C
int sprawdz_saldo() {
...
return saldo;
}
1) Musimy poświęcić jakieś wartości na kod błędu (jaką ? -1, 0.1, -0.9999)
2) Trzeba sprawdzać w kodzie czy funkcja zakończyła się powodzeniem czy nie i reagować na niepowodzenia
3) Nie możemy wymusić na programiście reagowania na kody błędów
4) Program zaczyna wyglądać:
// spaghetti - code
if (funkcja(x) == -1) {
// Reakcja na blad
} else {
// Poprawny kod
}
if (function(y) == -1) {
// Reakcja na blad
} else {
// Poprawny
}
Czyta się potwornie nie wygodnie. Wady te niwelują wyjątki.
Zgłaszanie wyjątku:
// Definicja klasy, ktora zwracamy jako wyjatek
class blad_zakresu() {};
class blad_db() {};
void ustaw_rok_prod (int x) {
// blad_zakresu x;
// throw x; // Nazwany obiekt - x.
if (x <>> dane;
s >> dane;
if (!s) // oops
// Zanim zareagujemy na daną sprawdźmy czy strumień jest ok bo dane nie zostaną wczytane
// Może być tak, że EOF będzie powodował błąd więc ostatni odczyt powinien robić coś takiego:
if (!s && s.eof) // koniec pliku
if (!s && !s.eof) // błąd nie koniec pliku
// Strumieni same zgłaszają wyjątki
Polecane książki:
http://www.josuttis.com/
http://wysylkowa.pl/ks239250.html
Język C++
jezyk c++
Stroustrup Bjarne
No comments:
Post a Comment