[PHP] Exceptions php 5.2.1

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

onderstaand stukje code catcht de exception niet... Krijg gewoon de volgende melding in mijn browser:
Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' ....
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
//create function with an exception
function checkNum($number)
 {
 if($number>1)
  {
  throw new Exception("Value must be 1 or below");
  }
 return true;
 }

//trigger exception in a "try" block
try
 {
 checkNum(2);
 //If the exception is thrown, this text will not be shown
 echo 'If you see this, the number is 1 or below';
 }

//catch exception
catch(Exception $e)
 {
 echo 'Message: ' .$e->getMessage();
 }
?>

Iemand enig idee waarom dit simpel voorbeeld niet werkt :-s

Greetz,
J.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
> is groter dan......

wacht wat klopt er nou niet aan? Ik krijg de message gewoon te zien als ik hem draai: "Message: Value must be 1 or below" (ook 5.2.1)

[ Voor 94% gewijzigd door Y0ur1 op 03-06-2007 11:55 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, ik volg je niet helemaal.

Hij gooit de exception toch, wat de bedoeling is (2 is groter dan 1) , maarer wordt nix gecatched...

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Dat klopt dan toch Y0ur1 :?



Zet de catch eens direct tegen de sluit accolade van de try? Zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
try
 {
 checkNum(2);
 //If the exception is thrown, this text will not be shown
 echo 'If you see this, the number is 1 or below';
 }
catch(Exception $e)
 {
 echo 'Message: ' .$e->getMessage();
 }

[ Voor 84% gewijzigd door AtleX op 03-06-2007 11:51 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maakt nix uit als de catch er vlak tegen staat...

Ik had nog een ander stukje code om exceptions te proberen, en dan catchte ie de exception alleen maar als ik deed

if( voorwaarde )
throw exception
else
return bla

Als ik de else ofzo wegliet dan catchte ie het weer niet.. maar dat slaat toch nergens op..

Hopelijk kan hier iemand zeggen waar het aanligt (al dan niet een bug van php 5.2.1 ofzo), want ik snap er nix van.

greetz,
J.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Verwijderd schreef op zondag 03 juni 2007 @ 11:55:
Maakt nix uit als de catch er vlak tegen staat...

Ik had nog een ander stukje code om exceptions te proberen, en dan catchte ie de exception alleen maar als ik deed

if( voorwaarde )
throw exception
else
return bla

Als ik de else ofzo wegliet dan catchte ie het weer niet.. maar dat slaat toch nergens op..

Hopelijk kan hier iemand zeggen waar het aanligt (al dan niet een bug van php 5.2.1 ofzo), want ik snap er nix van.

greetz,
J.
Heel vreemd, ik draai jouw code letterlijk hier op mijn bak (ook 5.2.1) en ik krijg gewoon "Message: Value must be 1 or below" te zien.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Das idd heel vreemd... Moet er een php settingg geset worden ofzo die bij jouw misschien gezt is in php.ini en bij mij niet ofzo....

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Het lijkt me het handigst om even de output van phpinfo() met elkaar te vergelijken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
http://www.hortix.be/joren/phpinfo.php

dit is die van mij, ik weet niet of je daar iets uit kan afleiden...

Blijkbaar hebben jullie ook 5.2.1 en daar wordt ie gecatched, zoals het moet dus, maar ik krijg volgende melding:

Fatal error: Uncaught exception 'Exception' with message 'Value must be 1 or below' in /home/hortix/domains/hortix.be/public_html/joren/test.php:7 Stack trace: #0 /home/hortix/domains/hortix.be/public_html/joren/test.php(15): checkNum(2) #1 {main} thrown in /home/hortix/domains/hortix.be/public_html/joren/test.php on line 7

zie hier: http://www.hortix.be/joren/test.php

[ Voor 117% gewijzigd door Verwijderd op 03-06-2007 16:03 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Iemand een idee?

Acties:
  • 0 Henk 'm!

  • Alex Picard
  • Registratie: November 2005
  • Laatst online: 04-09 11:25
Bij jou staat er:
...
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with eAccelerator v0.9.5, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Zend Extension Manager v1.2.0, Copyright (c) 2003-2006, by Zend Technologies
with Zend Optimizer v3.2.2, Copyright (c) 1998-2006, by Zend Technologies...
En bij mij staat er
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies
with Zend Optimizer v3.2.0, Copyright (c) 1998-2006, by Zend Technologies
En de code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
    ini_set("display_errors",1);
    error_reporting(E_ALL);

    //create function with an exception
    function checkNum($number) {
        if($number>1) {
            throw new Exception("Value must be 1 or below");
        }    
        return true;
     }

    //trigger exception in a "try" block
    try {
        checkNum(2);
        //If the exception is thrown, this text will not be shown
        echo 'If you see this, the number is 1 or below';
    }

    //catch exception
    catch(Exception $e) {
        echo 'Message: ' .$e->getMessage();
    }
?>

Geeft bij mij keurig "Message: Value must be 1 or below".

Dus misschien iets met de eAccelerator of omdat je een andere verise hebt van de extension manager of optimizer?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Heel erg bedankt voor dat verschil aan te geven... Ik heb geen idee waarom dat verschil er is... dat zal ik moeten checken bij de verantwoordelijken van de server die ik gebruik... Hopelijk doet dit bij hun een belletje rinkelen...

Kan natuurlijk ook zijn dat het een bug is in die nieuwere versies... maar dan zou het toch bekend moeten zijn bij PHP zelf lijkt me.

Greetz,
J.

[ Voor 21% gewijzigd door Verwijderd op 05-06-2007 16:50 ]


Acties:
  • 0 Henk 'm!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Als je diezelfde versie even lokaal installeert, kan je ermee experimenteren om te zien of hij het dan wel correct doet. Aan de code is opzich niets mis..

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Het lijkt me eigenlijk wel voor de hand dat het wel eens aan die eAccelerator zou kunnen liggen. Waarschijnlijk ondersteund deze bij het parsen naar zijn eigen tussenformaat de exceptions niet op een juiste manier en/of houdt de stacktrace niet op een juiste manier bij en/of heeft moeite met het terugzoeken van bijbehorende catch blokken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Arjen Tempel
  • Registratie: Januari 2002
  • Niet online
Probeer eAccelerator eens tijdelijk uit te schakelen:
Apache: How can i disable eaccelerator on a particular virtualhost?
Just put php_flag eaccelerator.enable 0 and php_flag eaccelerator.optimizer 0 in a .htaccess file in the document root of the virtualhost or directly inside <Virtualhost> apache section.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,
hetvolgende in .htaccess plaatsen helpt inderdaad..

php_flag eaccelerator.enable 0
php_flag eaccelerator.optimizer 0

Ik krijg mijn errors nu dus correct te zien.
Heel erg bedankt...

Greetz,
J.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Het blijkt inderdaad een bekend probleem te zijn be eAccelerator.

http://eaccelerator.net/ticket/242

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

De bugs zijn de wereld nog niet uit...

Acties:
  • 0 Henk 'm!

  • Gwaihir
  • Registratie: December 2002
  • Niet online
Ik dacht dat je tegelijk met eAccelerator nooit de Zend Optimizer zou moeten gebruiken..
Pagina: 1