Výjimky chovající se, jako by byly poděděné od Nette Object

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jantichy
Člen | 24
+
0
-

Ahoj, už jsem mockrát narazil na to, že by se mi líbilo, kdyby všechny výjimky měly stejně příjemné a jednotné chování, jako třídy odvozené od Nette Object. Tedy zejména přístup přes properties ve smyslu $e->message a rozšířené možnosti reflexe.

Což v praxi samozřejmě nejde udělat tak, že by se podědily od Nette Object. Takže můj návrh je udělat jednu Nette Exception, která by byla předkem všech ostatních výjimek ve frameworku (a potažmo bych pak od ní rád odvozoval i všechny své ostatní výjimky), do které by se vepsala stejná volání a mapování do ObjectMixin, jako je teď v Nette Object.

Co si o tom myslíte?

A když už by se to dělalo, tak by se tomu mohla přidat nějaká další příjemná logika, například nějaké elegantnější nastavování defaultní zprávy a kódu v poděděných výjimkách apod.

Honza Marek
Člen | 1664
+
0
-

Nevim, za sebe to nepotřebuju. Většinou si vystačím s vyhozením a chycením výjimky a k tomu mi Nette výjimka nijak nepomůže.

Další problém je, že tak půlka výjimek používaných v Nette jsou standardní PHP výjimky. A tam to dodělat nejde. Takže by v tom byl pak bordel.

Ondřej Mirtes
Člen | 1536
+
0
-

Bože, co jsem to provedl? :o) Já ti tenhle šílený nápad neměl říkat :o)

Jsem pro, $e->message je sexy, nic tomu nebrání, Zend má taky svou obecnou Exception.

Nette používá nějakou výjimku přímo z PHP? Mám za to, že používá ty z exceptions.php a pak ještě některé s namespacem.

Blizzy
Člen | 149
+
0
-

Ondřej Mirtes napsal(a):

Nette používá nějakou výjimku přímo z PHP? Mám za to, že používá ty z exceptions.php a pak ještě některé s namespacem.

Myslím, že např. InvalidArgumentException není z Nette, ale z SPL. A tyto výjimky Nette používá hojně.

Editoval Blizzy (9. 8. 2010 0:26)

David Grudl
Nette Core | 8136
+
0
-

Z SPL se používá LogicException, InvalidArgumentException, RuntimeException, UnexpectedValueException.

Obecně nejsem proti, ale než do toho šáhnu, chtělo by to promyslet celkovou koncepci používání výjimek v Nette. Kdy použít low-level výjimky jako UnexpectedValueException, kdy zvolit vlastní výjimky atd. Protože tato úprava rozes**e veškerý existující kód a musí tedy k ní být pořádný důvod. Chcete se toho někdo ujmout a napsat RFC?

p.s. tohle téma skutečně založil člověk, který mi napsal „i po několika měsících asistence u vývoje v Nette mi
přijde spousta věcí jako jedna velká zbytečně neprůhledná magie a jedno velké WTF. … tenhle framework by měl mít možnost používat hned od začátku, bez nutných znalostí úplně všech hlubokých mechanizmů v něm.“ sorry, ale musel jsem si rýpnout Honzo!

jantichy
Člen | 24
+
0
-

Ahoj,

p.s. tohle téma skutečně založil člověk, který mi napsal „i po několika měsících asistence u vývoje v Nette mi
přijde spousta věcí jako jedna velká zbytečně neprůhledná magie a jedno velké WTF. … tenhle framework by měl mít možnost používat hned od začátku, bez nutných znalostí úplně všech hlubokých mechanizmů v něm.“

:)) Já si myslím, že to, co navrhuji výše, není žádná magie v tom smyslu, že pokud to někdo nebude chtít používat nebo si o tom zatím vůbec nic nepřečetl a ani neví, že něco takového rozšířené Nette výjimky umí, tak to vůbec ničemu nevadí, protože i nadále může vše používat přesně tak, jako doposud, bez sebemenší změny chování. Prostě je tu bezpečný standardní fallback pro nepoučené. Jenom to usnadní práci těm, kteří už o tom vědí a usnadnit si ji chtějí.

A to je přece úplně jiný případ, než když si u něčeho musím nejdřív nastudovat tuny podkladů a pochopit všechny aspekty a detaily do hloubky, abych vůbec mohl začít cokoliv používat.

David Grudl
Nette Core | 8136
+
0
-

Magie je to v okamžiku, kdy studuješ cizí kód, například příklad v distribuci, tutorial atd.

PaBi3
Bronze Partner | 62
+
0
-

Keby malo PHP viacnásobnú dedičnosť, tak by to bolo skvelé. Takto je tento návrh podľa mňa nezmysel. Jeho prínos by bol minimálny.

Majkl578
Moderator | 1364
+
0
-

PaBi3 napsal(a):

Keby malo PHP viacnásobnú dedičnosť, tak by to bolo skvelé. Takto je tento návrh podľa mňa nezmysel. Jeho prínos by bol minimálny.

Od PHP 5.4 bude mít traity.

David Grudl
Nette Core | 8136
+
0
-

Super, ta by tu mohla do 5 let být :-)

Majkl578
Moderator | 1364
+
0
-

David Grudl napsal(a):

Super, ta by tu mohla do 5 let být :-)

Zítra by měla vyjít alpha verze, tak snad tak do dvou. :)