LonghornPHP 2026

Voting

: seven plus two?
(Example: nine)

The Note You're Voting On

Dor
14 years ago
It's important to note that subclasses of the Exception class will be caught by the default Exception handler

<?php
    
    /**
     * NewException
     * Extends the Exception class so that the $message parameter is now mendatory.
     * 
     */
    class NewException extends Exception {
        //$message is now not optional, just for the extension.
        public function __construct($message, $code = 0, Exception $previous = null) {
            parent::__construct($message, $code, $previous);
        }
    }
    
    /**
     * TestException
     * Tests and throws Exceptions.
     */
    class TestException {
        const NONE = 0;
        const NORMAL = 1;
        const CUSTOM = 2;
        public function __construct($type = self::NONE) {
            switch ($type) {
                case 1: 
                    throw new Exception('Normal Exception');
                    break;
                case 2:
                    throw new NewException('Custom Exception');
                    break;
                default:
                    return 0; //No exception is thrown.
            }
        }
    }
    
    try {
        $t = new TestException(TestException::CUSTOM);
    }
    catch (Exception $e) {
        print_r($e); //Exception Caught
    }
    
?>

Note that if an Exception is caught once, it won't be caught again (even for a more specific handler).

<< Back to user notes page

To Top