eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingCzy biblioteka powinna rzucać wyjątki? › Czy biblioteka powinna rzucać wyjątki?
  • X-Received: by 2002:a37:db0a:: with SMTP id e10mr14463343qki.273.1586027425035; Sat,
    04 Apr 2020 12:10:25 -0700 (PDT)
    X-Received: by 2002:a37:db0a:: with SMTP id e10mr14463343qki.273.1586027425035; Sat,
    04 Apr 2020 12:10:25 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin2!goblin.
    stu.neva.ru!aioe.org!peer01.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me
    .highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.c
    om!postnews.google.com!google-groups.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sat, 4 Apr 2020 12:10:24 -0700 (PDT)
    Complaints-To: g...@g...com
    Injection-Info: google-groups.googlegroups.com; posting-host=213.108.152.51;
    posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
    NNTP-Posting-Host: 213.108.152.51
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <5...@g...com>
    Subject: Czy biblioteka powinna rzucać wyjątki?
    From: Maciej Sobczak <s...@g...com>
    Injection-Date: Sat, 04 Apr 2020 19:10:25 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Bytes: 3516
    X-Received-Body-CRC: 1341168604
    Xref: news-archive.icm.edu.pl pl.comp.programming:214809
    [ ukryj 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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: