PHP Notice zachytávat jako exception

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

[2013–12–16 09–03–50] PHP Notice: Unknown: Unexpected characters at end of address: ;
b=P4kAEjvXPvSvrV0n4dtVscukRbD8E3hfNXMrVG+zU3vzac16UnK//ftrJ2aWq4B7J
NE9ZP (errflg=3) in Unknown:0 @

jak by jste debugovali tento notice? tezko rict k cemu to patri a co to vubec je, exception se nevytvari, proc tohle nette neprevadi do exception?

Casper
Člen | 253
+
0
-

K druhé části otázky ohledně konverzí chyb na exception – kdysi se to řešilo tady a trochu tady.

enumag
Člen | 2118
+
0
-

Prošel jsem si vlákna a našel jen info že je spousta lidí pro a téměř nikdo proti + info od Davida že to chvíli bude zkoušet a pak se uvidí. Jaké jsou tedy důvody proč ta konverze na výjimky ve finále v Nette není?

enumag
Člen | 2118
+
0
-

@David Grudl: Toho jsem si vědom. Zajímají mne ale důvody proč to ty nechceš, přestože sis tím byl tehdy poměrně jistý. ;-)

David Grudl
Nette Core | 8282
+
0
-

(Stihl jsem ten předchozí komentář smazat).

Neříkám, že to nechci, nakonec to hodně často používám, jen si nejsem jist, jestli to dát do frameworku kvůli přenositelnosti kódu. Takže to spíš „obcházím“ třídami jako je FileSystem.

enumag
Člen | 2118
+
0
-

@David Grudl: OK, zkusím si to ve své aplikaci zapnout a uvidím jak mi to bude vyhovovat. Díky.

mcmatak
Člen | 505
+
0
-

a jak se to jako zapíná?

enumag
Člen | 2118
+
0
-

@mcmatak: Kódem který sem David napsal a pak jej smazal:

set_error_handler(function($severity, $message, $file, $line) {
    if (($severity & error_reporting()) === $severity) {
        throw new ErrorException($message, 0, $severity, $file, $line);
    }
    return FALSE;
});
David Grudl
Nette Core | 8282
+
0
-

Aby to neobcházelo Debugger, je třeba místo return FALSE zavolat Debugger::_errorHandler(...).

David Grudl
Nette Core | 8282
+
0
-

Nicméně Debugger by mohl umět převádět chyby na výjimky, jen by to standardně nebylo aktivní. Do proměnné by se nastavila maska chyb (např. E_ALL), které se mají převádět na výjimky ErrorException.

Přemýšlím jen, jak tu proměnnou nazvat…

enumag
Člen | 2118
+
0
-

@DG: convertErrors?

Jan Tvrdík
Nette guru | 2595
+
0
-

Akorát mi připadá trochu hloupé, že dost zásadní chování bude záviset na debuggeru, který se tváří jako bezproblému vypnutelná část.

David Grudl
Nette Core | 8282
+
0
-

Jak se to vezme. Pokud nebudeš ErrorException zachytávat, chování se nezmění, jen aplikace rovnou padne. To mi připadá v CLI aplikacích jako ideální stav (a ve webových jako zcela nevhodný).

Pokud je zachytávat budeš, změníš tím paradigma, nicméně nepůjde ani tak o závislost na Debuggeru, jako spíš o závislost na jednoduchém handleru.

mcmatak
Člen | 505
+
0
-

Zdá se, že toto ani zachytit nelze?

https://bugs.php.net/bug.php?…

možná to není ani tak problém nette, ale konkrétně tento notice se zdá snad nezachytitelný

http://objectmix.com/…ine-0-a.html

tato fce

@imap_rfc822_parse_adrlist()

prostě vyhodí notice a ztišit ani odchytit to nejde? je to tak?

ale možná sem ten errorhandler nastavil blbě