![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 1 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam kolejne pytanie.
Komunikując się z jakąkolwiek bazą danych używamy driverów, one są tak genialne że wyrzucają nam wyjątki. Rozchodzi mi się o sens wyłapywania wyjątku przy każdym zapytaniu. Po dłuższym zastanowieniu doszedłem do wniosku, że to nie ma sensu. W przykładach posłużę się MongoDB.
Takie łapanie błędów ma sens tylko w fazie debugowania jeżeli zapytanie nie działa tak jak chcemy. Jeżeli nasze zapytanie zadziała raz, to nie ma szans, żeby nagle przestało działać i wyrzucać wyjątki. Dlatego jedynym miejscem gdzie wystarczy złapać wyjątek jest:
Mylę się? Ten post edytował tadeurz 9.08.2013, 09:21:17 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mylisz się co do tego gdzie może pojawić się wyjątek co już Ci napisano. Masz jednak rację co do tego, że łapanie wyjątków wszędzie, gdzie to tylko możliwe jest bez sensu. Wyjątki łapiemy dopiero wtedy, kiedy możemy z nimi coś sensownego zrobić. W przypadku błędów wynikających z pracy sterownika bazy danych niemal zawsze jedynym co możemy zrobić to wyświetlić komunikat 500 Internal Server Error i co najwyżej jawnie cofnąć wszystkie otwarte transakcje. Dlatego spokojnie możesz utworzyć sobie blok try..catch w jakimś centralnym miejscu, w którym startuje aplikacja i tam przechwytywać wszystkie niewychwycone wyjątki w celu "kontrolowanego wywalenia strony".
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 19:36 |