-
Data: 2020-04-04 21:10:24
Temat: Czy biblioteka powinna rzucać wyjątki?
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Chyba w miarę upływu czasu zmieniają się oczekiwania użytkowników oraz mody wśród
autorów bibliotek.
Pytanie: jakie macie oczekiwania wobec bibliotek? Mają rzucać wyjątki?
Różne języki mają różne konwencje, ale nawet jeden język potrafi mieć różne polityki
w zależności od tego, jaki jest charakter wywoływanej funkcji.
Np. C++ rzuci wyjątkiem z operatora new, jeśli nie ma pamięci. Z tego powodu wyjątek
poleci też z każdej innej funkcji biblioteki std, ale nie każde niepowodzenie jest
tak zgłaszane. Np. błąd odczytu pliku albo błąd formatu danych w IOStreams już
wyjątkiem nie będzie.
Czy to jest zgodne z oczekiwaniami? Czy te oczekiwania zależą od rodzaju biblioteki?
Że np. akceptujemy wyjątek z biblioteki GUI, ale już z biblioteki I/O (jak IOStreams)
lepiej mieć status? A może jest inaczej?
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. Przyznam, że ten pogląd mnie zaintrygował
najbardziej, chociaż nie widzę możliwości jego konsekwentnego zastosowania wszędzie
(patrz choćby wspomniany operator new).
Są też języki, które używają wyjątków do zgłaszania wykroczeń poza ograniczenia
systemu typów (do tego zaliczam przekroczenia zdefiniowanych zakresów, wyjazd poza
tablicę, itp.). Nie widzę tego bez wyjątków. Ale powstaje też pytanie, na ile użycie
nieistniejącego indeksu w tablicy jest podobnym zjawiskiem do np. próby skorzystania
z nieistniejącego zasobu URL w sieci - i w jakim stopniu zgłaszanie takich błędów
powinno być podobne.
Itp., itd., etc.
Jak to widzicie obecnie? W C++? Gdzie indziej?
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 04.04.20 21:51 Mateusz Viste
- 05.04.20 23:31 Maciej Sobczak
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-17 Zniknął list gończy za "Frogiem". Frog się nam odnalazł?
- 2025-01-17 Kto wytłumaczy "głupiemu" prezydentowi Dudzie wielką moc prawną "dekretu premiera" TUSKA? [(C)Korneluk (2025)]
- 2025-01-17 Warszawa => Inżynier oprogramowania .Net <=
- 2025-01-17 Natalia z Andrychowa
- 2025-01-17 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-17 Warszawa => System Architect (Java background) <=
- 2025-01-17 Warszawa => Full Stack .Net Engineer <=
- 2025-01-17 Gliwice => IT Expert (Network Systems area) <=
- 2025-01-17 Lublin => Programista Delphi <=
- 2025-01-17 Warszawa => Developer .NET (mid) <=
- 2025-01-17 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-17 Katowice => Senior Field Sales (system ERP) <=
- 2025-01-17 Wróblewo => Analityk finansowy <=
- 2025-01-17 Żerniki => Specjalista ds. Employer Brandingu <=
- 2025-01-17 pradnica krokowa