🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #14502

Re: Wyrzucenie wyjątku, czy zwrócenie null?

#14502
From: Przemek Pokrywka
Date: Mon, 03 Apr 2006 23:52
36 lines
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-mail
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>

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