Article View: pl.comp.lang.python
Article #26756Re: python vs php - potrzebne argumenty
From: Jaroslaw Zabiello
Date: Sat, 31 Oct 2009 06:02
Date: Sat, 31 Oct 2009 06:02
46 lines
3065 bytes
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-mailReferences:
<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