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

Kako da uhvatim division by zero exeption ?

[es] :: PHP :: PHP za početnike :: Kako da uhvatim division by zero exeption ?

[ Pregleda: 3800 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Kako da uhvatim division by zero exeption ?17.11.2014. u 21:53 - pre 64 meseci
Nov sam u PHP-u, pa malo eksperimentišem i želim namerno da uhvatim "devide by zero" exception i da se izvrši kod unutar CATCH bloka.
Evo kako sam pokušao:
Code:

error_reporting(E_ALL ^ E_NOTICE);

try
{    
    $vvv = 'gasgas';
    $rrr = $vvv / 0;
    echo 'rrr:  '.$rrr;   
}
catch(Exception $e){    
    echo $e->getMessage();    
}

Rezultat je:

Warning: Division by zero in D:\WAMP php DocumentRoot\www\ ... _Samples\_probing_trycatch.php on line 9
rrr:

Znači ne prekine se izvršenje nego se dođe do linije "echo 'rrr: '.$rrr;" i otuda ovo "rrr:" na stranici ispod Warning.
Moje prvo pitanje je kako ja da ga nagnam da uđe u CATCH blok i da pročitam taj getMessage() najzad ?
Moje drugo pitanje je da li ja mogu nekako da disejblujem ovaj Warning da se nevidi ?
Negde sam našao na netu da za disejblovanje upozorenja treba da na vrhu php fajla stavim error_reporting(E_ALL ^ E_NOTICE) i to mi je pre u nekim drugim slučajevima davalo rezultate ali sada ne. Takođe sam u php.ini stavio "error_reporting = E_ALL & E_NOTICE" ali vorning je i dalje tu.
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
95.180.71.*



+254 Profil

icon Re: Kako da uhvatim division by zero exeption ?17.11.2014. u 22:11 - pre 64 meseci
http://php.net/manual/en/language.exceptions.php
Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Kako da uhvatim division by zero exeption ?17.11.2014. u 23:44 - pre 64 meseci
Hmm da, ali ja ne želim da mu ja govorim o kakvoj se grešci radi, nego želim da on saam zaključi i izbaci mi message o grešci (ne mora obavezno da bude division by zero).
Jer ja da znam do koje greške može doći ja bih korigovao kod i izbegao mogućnost pojave greške.
Inače nisam još pročitao sve na linku, možda se u ErrorException krije rešenje.
Ja ne želim da ja pišem "throw new Exception"... nego da mi on sam izbaci koja je greška (kao u VB.NET)
 
Odgovor na temu

Nemanja Avramović
Software architect
Cloud Horizon
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4382
*.dynamic.isp.telekom.rs.

Jabber: Nemanja Avramović
Sajt: avramovic.info


+45 Profil

icon Re: Kako da uhvatim division by zero exeption ?18.11.2014. u 07:13 - pre 63 meseci
Izuzeci su prilično nova stvar u PHP-u, tako da deljenje nulom ne baca izuzetak već daje PHP grešku.

Rešenje je registrovanje sopstvenog error handler-a koji će za sve greške da baci izuzetak, kao što je objašnjeno u "ErrorException" primeru.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Kako da uhvatim division by zero exeption ?18.11.2014. u 12:31 - pre 63 meseci
E da bravo , još samo da isprovaljujem kako se to radi, gde se registruje na kom šalteru, da li to znači da treba da pišem neku svoju klasu, nov sam u php-u pa me dosta toga buni, moram da guglam..
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 5825

Sajt: pedja.supurovic.net


+1384 Profil

icon Re: Kako da uhvatim division by zero exeption ?19.11.2014. u 01:19 - pre 63 meseci
http://php.net/manual/en/function.set-exception-handler.php
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Kako da uhvatim division by zero exeption ?19.11.2014. u 19:24 - pre 63 meseci
Hvala, pogledaću, i potražiću i po netu pa ako isprovaljujem kako i dođem do ultimate rešenja postovaću.
Meni u suštini treba da mogu da napišem:
Code:

try {   
        //neki kod
     }
catch (MojExeption $e){   /*MojExeption klasa koja bi trebala da konvertuje erore u exeptione - ako sam skapirao koncept*/
   echo 'GREŠKA: '. $e->getMessage();     
}


i da ovaj try catch blok hvata i error-e i izuzetke i prikaže mi poruku o grešci , bez da ja moram da pišem throw new exeption u okviru try bloka, a disejblovaću sa:
ini_set('display_errors', 0); .. tako sa se sve hendluje preko mog koda.
 
Odgovor na temu

Nemanja Avramović
Software architect
Cloud Horizon
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4382
*.dynamic.isp.telekom.rs.

Jabber: Nemanja Avramović
Sajt: avramovic.info


+45 Profil

icon Re: Kako da uhvatim division by zero exeption ?20.11.2014. u 20:48 - pre 63 meseci
Da, samo što tvoja klasa koju bacaš kao izuzetak mora da nasledi Exception klasu.

Throw ne moraš da radiš za PHP greške, ako namestiš error handler kako je opisano na linku gore. Ako praviš svoje neke klase u njima možeš da bacaš izuzetke po potrebi a da ih hvataš ovamo u "glavnom" kodu.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Kako da uhvatim division by zero exeption ?

[ Pregleda: 3800 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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