Article View: pl.comp.programming
Article #215554Re: Ada Tutorial - w Instytucie Lotnictwa
From: Wojciech Muła
Date: Wed, 08 May 2019 13:32
Date: Wed, 08 May 2019 13:32
31 lines
2781 bytes
2781 bytes
On Tuesday, May 7, 2019 at 10:52:14 PM UTC+2, heby wrote:
> On 07/05/2019 21:15, Wojciech Muła wrote:
> > Zadanie dla chętnych: w ilu miejscach może tu polecieć wyjątek?
> > Type1 i Type2 to jakieś klasy dostarczone przez użytkownika,
> > nic o nich nie wiemy.
> >
> > Type1 fun(Type2 a, Type2 b)
> > {
> > if (a.get_value() > b.get_value()) {
> > return a.get_foo();
> > }
> >
> > return a.get_bar() + b.get_foo();
> > }
>
> Skoro nic o nich nie wiemy to obsługa tego wyjątku ma znaleźć się w
> kodzie który coś o Type1 i Type2 wie czyli pewnie poziom niżej. Inaczej
> kończysz na try {} catch(...) to jest jeszcze gorsze.
>
> Wyjątki nie łapie się po każdym dodawaniu. Łapie się tam gdzie wiadomo
> co z nimi zrobić.
Ale łapanie wyjątku to jest połowiczne rozwiązanie problemu. W szczególności,
jeśli wyjątek może pójść w dowolnym miejscu kodu (w tym przykładzie jest co
najmniej 13 miejsc, skąd może coś polecieć), to jaki będzie stan obiektu na
rzecz którego wołano metodę? Czy np. taki obiekt można bezpiecznie używać
dalej (stan wewnętrzny pozostał spójny)? Albo chociaż wywołać destruktor?
A co jeśli wyjątek leci z miejsca, o którym wierzyłeś, że nigdy nie poleci
i jednak dostajesz terminate?
w.
Technical Details
Message-ID:
<0eb77d44-3b22-41cb-8339-2346fe0b6c4d@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.telefonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!t9no5866737qtn.0!news-out.google.com!b26ni279qtp.1!nntp.google.com!t9no5866730qtn.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<c1760262-b4a3-44fe-a99e-2fa16be86820@googlegroups.com> <btKtE.25850$wd2.16727@fx24.fr7> <9537dd39-0164-41a6-803b-393b77b4a701@googlegroups.com> <qasr5t$7i2$1@dont-email.me>Show Full Headers
Complete Article Headers
X-Received: by 2002:a0c:8d07:: with SMTP id r7mr17594194qvb.206.1557322351014; Wed, 08 May 2019 06:32:31 -0700 (PDT) X-Received: by 2002:ac8:33bc:: with SMTP id c57mr27742186qtb.252.1557322350796; Wed, 08 May 2019 06:32:30 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.telefonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!t9no5866737qtn.0!news-out.google.com!b26ni279qtp.1!nntp.google.com!t9no5866730qtn.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Wed, 8 May 2019 06:32:30 -0700 (PDT) In-Reply-To: <qasr5t$7i2$1@dont-email.me> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=78.11.8.249; posting-account=VFwkXwoAAADdT4-lLKRZrMYkTjizGoyn NNTP-Posting-Host: 78.11.8.249 References: <c1760262-b4a3-44fe-a99e-2fa16be86820@googlegroups.com> <btKtE.25850$wd2.16727@fx24.fr7> <9537dd39-0164-41a6-803b-393b77b4a701@googlegroups.com> <qasr5t$7i2$1@dont-email.me> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <0eb77d44-3b22-41cb-8339-2346fe0b6c4d@googlegroups.com> Subject: Re: Ada Tutorial - w Instytucie Lotnictwa From: Wojciech Muła <wojtek.mula@gmail.com> Injection-Date: Wed, 08 May 2019 13:32:30 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit