// float // trigger an exception if (is_float($num)) { throw new FloatException($num); } // negative // trigger an exception if ($num < 0) { throw new NegativeNumException($num); } // out of range // trigger an exception if ($num > 1000 || $num < 100) { throw new OutOfRangeException($num); } } // try this code try { testNumber(-19); } catch (NegativeNumException $e) { print 'A negative number was provided (' . $e->getMessage() . '). Please provide a positive integer between 100 and 1000.<br />'; } catch (OutOfRangeException $e) { print 'The number provided is out of range (' . $e->getMessage() . '). Please provide a positive integer between 100 and 1000.<br />'; } catch (FloatException $e) { print 'The number provided is not an integer (' . $e->getMessage() . '). Please provide a positive integer between 100 and 1000.<br />'; } catch (Exception $e) { print 'Error message: ' . $e->getMessage() . '<br />'; print 'Error code: ' . $e->getCode() . '<br />'; print 'File and line: ' . $e->getFile() . '(' . $e->getLine() . ')<br />'; print 'Trace: ' . $e->getTraceAsString() . '<br />'; }
// function to test a number // generates E_USER_WARNING if number is a float // generates E_USER_ERROR is number is negative function testNumber($num) { // float // trigger a warning if (is_float($num)) { trigger_error("Number {$num} is not an integer", E_USER_WARNING); } // negative // trigger a fatal error if ($num < 0) { trigger_error("Number {$num} is negative", E_USER_ERROR); } } function myErrorHandler($type, $msg, $file, $line, $context) { switch ($type) { case E_USER_ERROR: die("Fatal error on line {$line} of {$file}: {$msg}<br/>"); break; } } // set the name of the custom handler set_error_handler('myErrorHandler'); // test the function with different values testNumber(100); testNumber(5.6); testNumber(-8);