Article View: pl.comp.objects
Article #14502Re: Wyrzucenie wyjątku, czy zwrócenie null?
From: Przemek Pokrywka
Date: Mon, 03 Apr 2006 23:52
Date: Mon, 03 Apr 2006 23:52
36 lines
2989 bytes
2989 bytes
Aleksander Galicki napisał(a): >>Używanie tradycyjnego 'try' w tego typu sytuacjach ma taką wadę, że >>łapane są również wyjątki w trakcie przetwarzania elementu usuniętego >>ze stosu. Jeśli w trakcie tych obliczeń zostało wykonane jakieś pop() >>na zupełnie innym stosie, który okazał się pusty, to prawdopodobnie >>powrót do tego miejsca i wykonanie kodu przeznaczonego dla sytuacji >>braku elementu na tym stosie jest błędem, zwykle polegającym na >>zamaskowaniu innego błędu. > > > To jest problem tylko w przypadku unchecked exception. W przypadku checked > exception hipotetyczny kod obslugujacy "przetwarzanie elementu usuniętego > ze stosu" zwykle jest rozbity na osobne metody i obsluga bledu zwiazanego z > zagniezdzonym pop() jest gdzie indziej juz napisana. Zwykle jest, ale nie zawsze. A nawet jeśli, to metody te równie dobrze mogą obsłużyć ten checked exception, jak i go po prostu wyrzucić, rezerwując sobie tę możliwość w swoich sygnaturach w klauzuli throws. Problem nie dotyczy więc wyłącznie unchecked exceptions, lecz w ich wypadku przeoczenie właściwej obsługi błędu jest jeszcze łatwiejsze. > Problem pozostaje, jesli > sie ten zagniezdzony pop() jest w tej samej metodzie w tym samym try. No ale > taka praktyka nalezy do kategorii zaciemniania kodu. Problem pozostaje, choć taki przypadek nawet niekoniecznie musi się dać zaklasyfikować jako "zaciemniacz" - mam na myśli sytuację, gdy zagnieżdżony pop() stanowi większość, lub też całość logiki pozytywnego scenariusza programu. Jeśli tylko należy do właściwego poziomu abstrakcji (operacje na kolekcjach), to nie widzę przeciwskazań, żeby go tam umieszczać bez obaw o zaciemnienie kodu. -- Pozdrawiam, Przemysław Pokrywka
Technical Details
Message-ID:
<e0scfr$32l$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<e09c3r$lg3$1@news.onet.pl> <e09f0h$cis$1@news.task.gda.pl> <e09gjn$737$1@news.onet.pl> <e0b1re$bdc$1@news.onet.pl> <e0c8eh$ur8$1@news.onet.pl> <e0cd04$ljh$1@news.task.gda.pl> <e0ced6$f7g$1@news.onet.pl> <e0dabl$1sv$1@news.task.gda.pl> <87y7ytka81.fsf <87r74el1ra.fsf@qrnik.zagroda> <06040400573371@polnews.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail From: Przemek Pokrywka <adres@zastrzezony.com> Newsgroups: pl.comp.objects Subject: Re: Wyrzucenie wyjątku, czy zwrócenie null? Date: Tue, 04 Apr 2006 01:52:20 +0200 Organization: Onet.pl Lines: 36 Message-ID: <e0scfr$32l$1@news.onet.pl> References: <e09c3r$lg3$1@news.onet.pl> <e09f0h$cis$1@news.task.gda.pl> <e09gjn$737$1@news.onet.pl> <e0b1re$bdc$1@news.onet.pl> <e0c8eh$ur8$1@news.onet.pl> <e0cd04$ljh$1@news.task.gda.pl> <e0ced6$f7g$1@news.onet.pl> <e0dabl$1sv$1@news.task.gda.pl> <87y7ytka81.fsf <87r74el1ra.fsf@qrnik.zagroda> <06040400573371@polnews.pl> NNTP-Posting-Host: 041.inet.polhost.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1144108347 3157 80.48.120.41 (3 Apr 2006 23:52:27 GMT) X-Complaints-To: usenet@news.onet.pl NNTP-Posting-Date: Mon, 3 Apr 2006 23:52:27 +0000 (UTC) X-Sender: 5aB4pqMdeQG1O30L902dNmlAzoKeNKcS In-Reply-To: <06040400573371@polnews.pl> X-Accept-Language: pl, en-us, en User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit