Z błędami jest taka generalna zasada: powinny być wyłapywane i obsługiwane w takiej klasie, która ma odpowiednią wiedzę i możliwości działania.
Czy klasa cMySQL ma odpowiednią wiedzę aby zadziałać w sytuacji gdy nie może wykonać zapytania ? Inaczej mówiąc: Co będzie mogła zrobić w takiej sytuacji ?
Będzie mogła powtórzyć próbę kilka razy, ewentualnie odnowić połączenie i spróbować jeszcze raz. Ostatecznie może wyświetlić komunikat. Prawdopodobnie takie działanie jest wystarczające.
Ale wyobraźmy sobie, że utrzymujemy i cały czas synchronizujemy zaposową bazę danych (co jest bardzo kosztowne ale bezpieczeństwo podnosi się drastycznie). W sytuacji problemu z podstawową bazą korzystamy z zapasowej. Czy cMySQL ma dostateczną wiedzę aby dokonać takiej podmiany ? Nie. Taka obsługa powinna znajdować się w miejscu, które korzysta z cMySQL.
Podobnie, w przykładzie użycia, który umieściłeś drogi silent, podejmujesz alternatywne działania w zależności od tego czy połączenie zakończy się powodzeniem czy też nie. Jest to oczywiście jedyne dobre miejsce na obsłużenie takiej sytuacji.
kilka uwag:
-
biedny Kooba, zaproponowałeś całkiem rozbudowany przykład.
-
proponuję przyjąć obowiązujący powszechnie zwyczaj nazywania klas wielkimi literami. (CMySQL zamiast cMySQL ... a prawdę mówiąc jeszcze lepiej po prostu MySQL).
-
bardzo rozsądnie byłoby zupełnie zrezygnować z funkcji Connect(...) a jej kod przenieść do konstruktora (przepraszam, początkowo sam to przeoczyłem).
... widzę że szybko łapiesz i jeśli chcesz poznać OOP i rozumiesz podstawowe pojęcia: dziedziczenie, polimorfizm i hermetyzacja to jest taka książka: "Wzorce Projektowe - projektowanie zorientowane obiektowo" Shalloway, Trott -przeczytanie jej na początku nauki z OOP to eksperyment nie dla mięczaków.
Poznałbyś podstawy UML, programowanie obiektowe w rozwiązywaniu typowych sytuacji i podstawy języka Java (który jest łatwym językiem, często wykładanym na pierwszym roku).
Jeśli jesteś zainteresowany takim eksperymentem, to spróbuję cię wesprzeć w trudnych momentach odpowiadając na różne pytania - dane kontaktowe na stronie: http://kapustka.net