Archief - try catch wordt genegeerd

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

sarnath

Legacy Member
hallo iedereen, ik ben zonet overgeschakeld van php 4 naar php 5 omdat ik dan enkele functionaliteiten kan benutten die ik nodig ga hebben.

Ik heb eveneens eens gekeken naar de errorhandling en wilde nu met try catch werken aangezien dit in php4 niet ging.

Nu blijkt dit in php5 nog steeds genegeerd te worden.

Een simpel voorbeeld:

Code:
<?php 
try{	
 echo (10 / 0) ;
}catch (Exception $e){
echo 'failed';
}
?>

Geeft als resultaat:

Warning: Division by zero in
/httpd.www/test.php on line 3

Iemand die enig idee heeft waarom hij niet gewoon "failed" zegt?

dJeez

Legacy Member
Er is inderdaad een groot verschil tussen PHP warnings en exceptions... En om het nog erger te maken, wat je als testcase gebruikt (nl. division by zero) staat LETTERLIJK in de PHP reference uitgelegd als voorbeeld van exception handling met try ... catch : PHP: Exceptions - Manual.

sarnath

Legacy Member
ik heb ook een slecht voorbeeld gebruikt, had het delen door nul dan ook van die references hoor..., wist gewoon niet dat een warning niet met een exception kon worden opgevangen.

Zal hier even mijn geval zetten waarin het voorvalt:

try {
if (mysql_data_seek($result,$j)){
$row = mysql_fetch_array($result);
}
}catch (Exception $e){
echo 'failed';
}

Ik wil hier seeken naar een bepaalde locatie in $result die de resultaten van een query bevat.
Stel dat daar op die locatie ($j is bijvoorbeeld 10) niets is, moet hij een error gooien in plaats van de standaardfoutmelding.

Ik ben vooral een java/.net programmeur en heb niet zoveel ervaring in het webdevelopment, maar ik ging ervan uit dat als je zoals in java : Java try and catch - Java tutorial

gewoon een try catch rond code zet en daarin een fout voorkomt, deze rechtstreeks naar de catch gaat, blijkbaar moet je altijd ook throwen?

killgore

Legacy Member
spijtig genoeg heeft php nogal last van: 'van alles wat'.

Als een fout voorkomt in ene php functie gaat deze geen exceptie gooien, deze gaat gewoon intern een foutmelding genereren en afhankelijk van de ernst beslissen te stoppen of door te gaan. Het beste dat je dus kan doen is ene notice/warning handler schrijven die excepties gooit.

sarnath

Legacy Member
killgore zei:
spijtig genoeg heeft php nogal last van: 'van alles wat'.

Als een fout voorkomt in ene php functie gaat deze geen exceptie gooien, deze gaat gewoon intern een foutmelding genereren en afhankelijk van de ernst beslissen te stoppen of door te gaan. Het beste dat je dus kan doen is ene notice/warning handler schrijven die excepties gooit.

inderdaad, ik ging ervan uit dat de wijze van errorhandling dezelfde was als in java, heb er mij gisteren en vandaag mee beziggehouden en er komt inderdaad heel wat meer bij kijken in php.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan