-
Data: 2020-04-05 23:31:05
Temat: Re: Czy biblioteka powinna rzucać wyjątki?
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]
> > Spotkałem się też z opinią, że biblioteka nie powinna rzucać
> > wyjątków, bo w ten sposób narzuca ten aspekt interfejsu aplikacji -
> > ale już aplikacja końcowa może sobie korzystać z wyjątków (które sama
> > sobie zdefiniuje, sama rzuci i sama złapie), bo nikomu innemu tego
> > nie narzuca.
>
> Podzielam ten pogląd. Korzystając z biblioteki, oczekuję maksymalnie
> uproszczonego działania, które nie zakłóci mi mojego workflow.
> Łapanie wyjątków jest mi w tym kontekście wyjątkowo nie po drodze. Inna
> sprawa, że w praktyce - jak zauważyłeś - jest jak jest.
Ale zauważmy, że biblioteki też korzystają z bibliotek - i w ten sposób można
wytłumaczyć wyjątek out_of_memory: winę ponosi kto inny.
Weźmy np. bibliotekę do wysyłania maili. Powiedzmy, że zgodnie w powyższymi regułami
ona sama w sobie nie rzuca wyjątków, ale korzysta z innych bibliotek, w szczególności
z podstawowej biblioteki run-time, gdzie jest operator new. I tenże operator rzuca
wyjątek. Jeżeli biblioteka do maili jest poprawnie napisana, to będzie wewnętrznie
exception-safe, czyli przepuści wyjątki z niższych warstw (z operatora new),
pozostając sama w jakimś spójnym stanie. Przy takiej interpretacji można uznać, że
reguły są spełnione.
Jest jeszcze pomysł na funkcje callback, które są wołane w różnych awaryjnych
sytuacjach. Taki callback daje użytkownikowi możliwość np. logowania problemów wtedy
gdy występują, albo nawet rzucenia własnego wyjątku, właśnie po to, żeby go sobie
złapać gdzie indziej na poziomie tej samej aplikacji. Wtedy znowu mamy spełnione
reguły, że biblioteka sama z siebie nie rzuca wyjątków, ale je toleruje, jeśli jakieś
przez nią przelatują.
Na pewno nie jest łatwo takie biblioteki pisać, ale może to być jakiś ideał, którym
można się w miarę możliwości kierować.
--
Maciej Sobczak * http://www.inspirel.com
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-29 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-01-29 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-29 Poznań => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-01-29 Poznań => Specjalista ds. Employer Brandingu <=
- 2025-01-29 Warszawa => Developer Microsoft Dynamics 365 Finance & Operations (D36
- 2025-01-29 Warszawa => Junior Rekruter <=
- 2025-01-29 Warszawa => Mid IT Recruiter <=
- 2025-01-29 Białystok => UX Designer <=
- 2025-01-29 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-29 Warszawa => Expert Recruiter 360 <=
- 2025-01-29 Zdalny podpis
- 2025-01-29 Nazbyt "muzyczne" słuchawki
- 2025-01-29 Warszawa => QA Engineer <=
- 2025-01-29 Prawo jak je [nie]rząd rozumie.
- 2025-01-29 Gdańsk => Specjalista ds. Sprzedaży <=