🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #26756

Re: python vs php - potrzebne argumenty

#26756
From: Jaroslaw Zabiello
Date: Sat, 31 Oct 2009 06:02
46 lines
3065 bytes
Dnia 29-10-2009 o 10:05:29 pakalk <pakalk@gmail.com> napisał(a):

>>  Mechanizm wyjątków nie czyni jezyka wyjątkowym
>>
>> wyjątkowym może nie, ale bezpieczniejszym i łatwiejszym w użyciu.
>> Wole dostać wyjątek, że nie zdefiniowałem zmiennej niż przesłać tą
>> niezdefiniowaną zmienną
>> do miliona rekordów w bazie czyszcząc wpisy i dowiedzieć się o tym po
>> fakcie przeglądając bazę
>> lub logi z php.
>
> set_error_handler()
> set_exception_handler()

Niestety, ale twój adwersasz ma rację. W PHP błędy wyłapuje się po faktach  
z logów.

Zarówno set_error_handler() jak i set_exception_handler() niewiele mogą.  
Wystarczy jeden, drobny błąd w zwracanych danych aby rozkraczyć każdą,  
choćby nie wiem jak zabezpieczoną, aplikację PHP (Jest tak dlatego, że  
idioci, co tworzyli ten język zadecydowali że błędy fatalne nie powinno  
się ograniczać tylko do błędu w parsowaniu składni). Jak nie wierzysz, to  
spróbuj programowo przechwycić poniższą sytuację. Nie wyłapiesz tego ani  
try-catchem ani niczym innym.


function jakis_kod() { return null; }
$obj = jakis_kod();
$obj->jakas_metoda(); # hehe, php leży i kwiczy

To jest po prostu kompletna kompromitacja dla tego języka. Pehap wywali  
się z kretyńskim błędem "Fatal error: Call to a member function  
jakas_metoda() on a non-object". Nic nie jest w stanie tego powstrzymać.

Już upierdliwy javowy NullPointerException jest lepszy, bo jest wyjątkiem,  
a wyjątki można wychwycić. Natomiast o tym że miał miejsce fatal error  
można dowiedzieć się tylko z logów. Lub z pustego ekranu, jak ma się tą  
wątpliwą przyjemność natrafić na coś takiego przy przeladowywaniu strony.

Innymi słowy, PHP nie jest w stanie dostarczyć więc szczelnego,  
zautomatyzowanego systemu wyłapywania błędów tak, jak to jest Django, czy  
web2py. Jedyne co można zrobić to mozolnie przetwarzać i analizować logi  
aby wyłuskiwać z nich takie błędy które wcześniej się pojawiły.

-- 
JZ http://blog.zabiello.com
Technical Details
Message-ID: <op.u2nhqrhyeaqjf2@macbook-pro-15-zbiru.local>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
References: <h83in7$rl3$1@inews.gazeta.pl> <b9dc7116-39db-474f-9282-8862b3f1cad2@d5g2000yqm.googlegroups.com> <a501db87-9ccf-4694-a8f8-330a67cdc839@15g2000yqy.googlegroups.com> <7aa62383-88c2-4138-89d6-594112504075@g27g2000yqn.googlegroups.com>

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: "Jaroslaw Zabiello" <usenet@onet.eu>
Newsgroups: pl.comp.lang.python
Subject: Re: python vs php - potrzebne argumenty
Date: Sat, 31 Oct 2009 06:02:41 -0000
Organization: http://onet.pl
Lines: 83
Message-ID: <op.u2nhqrhyeaqjf2@macbook-pro-15-zbiru.local>
References: <h83in7$rl3$1@inews.gazeta.pl> <b9dc7116-39db-474f-9282-8862b3f1cad2@d5g2000yqm.googlegroups.com> <a501db87-9ccf-4694-a8f8-330a67cdc839@15g2000yqy.googlegroups.com> <7aa62383-88c2-4138-89d6-594112504075@g27g2000yqn.googlegroups.com>
NNTP-Posting-Host: 78.16.214.205
Mime-Version: 1.0
X-Trace: news.onet.pl 1256968963 4482 78.16.214.205 (31 Oct 2009 06:02:43 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Sat, 31 Oct 2009 06:02:43 +0000 (UTC)
To: pakalk <pakalk@gmail.com>
User-Agent: Opera Mail/10.01 (MacIntel)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit