// 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 />';
}
Esempio n. 2
0
// 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);