ID: 41012 User updated by: perching_eagle at yahoo dot com Reported By: perching_eagle at yahoo dot com Status: Open Bug Type: *Compile Issues Operating System: windows xp PHP Version: 5.2.1 New Comment:
<?php $e="there is an error"; try{ throw new Exception ($e);//the throw can exist outside the try //block (or simply, almost anywhere) } try{ $err=34/0;//the compiler should ignore this error //it is legal because it is in a try block } $error=34/0;//the compiler should act on this error ?> //this error is illegal however zend engine will flag the error in the second try block (an abnormal behavior) instead of ignoring it. note: when flagging other posters comments as bogus, give logical reasons for doing so. Previous Comments: ------------------------------------------------------------------------ [2007-04-06 20:27:20] perching_eagle at yahoo dot com why is not a bug? this is an abnormal behavior, that restricts how you use the exception class. if the "try block" can't force an erroreneous code to compile, why do you have the "try" keyword anyway? the "throw" keyword could be used outside a "try block" and also in a "catch block" or anywhere else in the program. in a nutshell, the "try" keyword has no function at all in php, if it does, what is it? the documentation at php.net does not explain the function of the "try" keyword in php. ------------------------------------------------------------------------ [2007-04-06 18:55:16] [EMAIL PROTECTED] Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php . ------------------------------------------------------------------------ [2007-04-06 18:43:25] perching_eagle at yahoo dot com Description: ------------ the compiler ought to bypass exceptions in "try" blocks, and allow a "catch block" to catch the exception at runtime. in other words, "try" blocks should turn compile-time errors to run-time errors. try blocks shouldn't depend on the throw keyword before throwing exceptions, errors in try blocks should automatically cause exceptions to be thrown. otherwise the current Exception class is only as good as this statement "if(class_exists(Book)){//main code} else{//warning code}" for the code in my example. Reproduce code: --------------- <?php try{ $err=new Book(); //class Book does not exist //more code } catch(Exception $e){ print "class does not exist"; exit(); // or throw another exception that ends the program //in another block. } Expected result: ---------------- output:(should look like this) class does not exist (python and java behave like this, i hope there will be some consistence in logic, among open source languages ) Actual result: -------------- program does not compile, error message: Fatal error (actually says Fatel error), class 'Book' not found on C:/XXXX/XXX ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=41012&edit=1