Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Fatal error, a ja zelim exception :D

[es] :: PHP :: Fatal error, a ja zelim exception :D

[ Pregleda: 1036 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Fatal error, a ja zelim exception :D14.11.2009. u 18:36 - pre 188 meseci
Pozdrav,

Imam jedan problem ali ne i jasnu ideju kako da izadjem na kraj sa tim. Po sredi mozda jeste dizajn issue ali nazalost izmena arhitekture iz vise razloga nije prihvatljiva, mada na kraju mozda to bude jedino resenje...

Ono sto me zanima je sledece:

Kako da umesto fatal error-a dobijem exception a ne taj fatal error?

Evo recimo nekog primjera:

Code:

        try{
            $this->_somecls = new SomeCLS();
        }
        catch(Exception $e){
            //log it or something!
        }


Pri cemu jelte klasa SomeCLS ne postoji i kao izlaz ovoga imam:

Fatal error: Class 'SomeCLS' not found in...

A to je ono sto zelim da izbjegnem, i zelim da dobijem exception.
Ista situacija je sa nizom funkcija recimo require_once('fajl_kojeg_nema') i tako redom...

E logicno je da se namece pitanje zasto bi neko trazio fajl kojeg nema ili instancirao nepostojecu klasu?

Odgovor na ovo je malo specifican, jer aplikacija koristi java bridge i jos neke specificne stvari i radi se o "generisanju koda u letu" pa i ako problemi ovog tipa ne bi trebalo da se desavaju ipak mogu da se dese i ja iste moram da hendlujem.

Pokusavao sam sa http://php.net/manual/en/function.set-error-handler.php ali se iskreno govoreci nisam posvetio detaljnoj analizi, mada je moguce da tu lezi resenje za problem koji imam. U nekim slucajevima error_handler radi ok, al u nekim nazalost ne (bar to sto sam napisao).

Svi saveti predlozi i eventualna slicna iskustva su dobrodosala


 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: Fatal error, a ja zelim exception :D14.11.2009. u 19:08 - pre 188 meseci
Evo korisnog snippeta koji resava problem za ovo sto sam napisao:

Code:

function exceptions_error_handler($severity, $message, $filename, $lineno) {
  if (error_reporting() == 0) {
    return;
  }
  if (error_reporting() & $severity) {
    throw new ErrorException($message, 0, $severity, $filename, $lineno);
  }
}
set_error_handler('exceptions_error_handler'); 


Javljam se ako bude jos nekih problema...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Fatal error, a ja zelim exception :D14.11.2009. u 19:08 - pre 188 meseci
A da li dolazi u obzir da ispred tih require_once stavljaš "@", kako bi izbegao ispis greške? Ili ti baš moraš da "uhvatiš" tu grešku?

Mislim da je i meni jednom trebalo nešto slično, i evo kako sam ja to rešio. Inače, ovo sam pronašao čini mi se baš negde u manual-u, neki lik ga je post-ovao :
Code:
class DefaultException extends Exception {
    public static function errorHandler($code, $string, $file, $line, $context) {
        $ex = new self($string, $code);
        $ex->line = $line;
        $ex->file = $file;
        
        throw $ex;
    }
}

//I onda nege u kodu:
set_error_handler(array("DefaultException", "errorHandler"), E_ALL);

I onda bi mogao da hvataš izuzetke, koji će prihvatati i sve error-e.
 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
*.dynamic.sbb.rs.

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: Fatal error, a ja zelim exception :D14.11.2009. u 19:54 - pre 188 meseci
Citat:

A da li dolazi u obzir da ispred tih require_once stavljaš "@", kako bi izbegao ispis greške? Ili ti baš moraš da "uhvatiš" tu grešku?


Moram sve da hvatam naravno, i eh da je samo require_once nego bas ali bas gomila stvari su potencijalno opasne.

Sto se tice snippeta koji si ostavio, svede se fakticki na isto kao i prethodni (takodje je sa php.net) samo sto naravno imam niz nekih dodatnih funkcionalnosti u toj klasi sada...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Fatal error, a ja zelim exception :D14.11.2009. u 20:53 - pre 188 meseci
Pa da, isto mu dođe, post-ovali smo u isto vreme ta dva snippet-a, i da sam prethodno video taj tvoj, ne bih ni slao tu moju poruku.

Eto, objektno-orijentisano rešenje uvek nudi više mogućnosti.
 
Odgovor na temu

[es] :: PHP :: Fatal error, a ja zelim exception :D

[ Pregleda: 1036 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.