php class extends exception

Solutions on MaxInterview for php class extends exception by the best coders in the world

showing results for - "php class extends exception"
Paulina
15 May 2016
1
2<?php
3/**
4 * Define a custom exception class
5 */
6class MyException extends Exception
7{
8    // Redefine the exception so message isn't optional
9    public function __construct($message$code 0Throwable $previous null{
10        // some code
11    
12        // make sure everything is assigned properly
13        parent::__construct($message$code$previous);
14    }
15
16    // custom string representation of object
17    public function __toString({
18        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
19    }
20
21    public function customFunction({
22        echo "A custom function for this type of exception\n";
23    }
24}
25
26
27/**
28 * Create a class to test the exception
29 */
30class TestException
31{
32    public $var;
33
34    const THROW_NONE    = 0;
35    const THROW_CUSTOM  = 1;
36    const THROW_DEFAULT = 2;
37
38    function __construct($avalue self::THROW_NONE{
39
40        switch ($avalue) {
41            case self::THROW_CUSTOM:
42                // throw custom exception
43                throw new MyException('1 is an invalid parameter'5);
44                break;
45
46            case self::THROW_DEFAULT:
47                // throw default one.
48                throw new Exception('2 is not allowed as a parameter'6);
49                break;
50
51            default52                // No exception, object will be created.
53                $this->var = $avalue;
54                break;
55        }
56    }
57}
58
59
60// Example 1
61try {
62    $o new TestException(TestException::THROW_CUSTOM);
63catch (MyException $e) {      // Will be caught
64    echo "Caught my exception\n"$e;
65    $e->customFunction();
66catch (Exception $e) {        // Skipped
67    echo "Caught Default Exception\n"$e;
68}
69
70// Continue execution
71var_dump($o); // Null
72echo "\n\n";
73
74
75// Example 2
76try {
77    $o new TestException(TestException::THROW_DEFAULT);
78catch (MyException $e) {      // Doesn't match this type
79    echo "Caught my exception\n"$e;
80    $e->customFunction();
81catch (Exception $e) {        // Will be caught
82    echo "Caught Default Exception\n"$e;
83}
84
85// Continue execution
86var_dump($o); // Null
87echo "\n\n";
88
89
90// Example 3
91try {
92    $o new TestException(TestException::THROW_CUSTOM);
93catch (Exception $e) {        // Will be caught
94    echo "Default Exception caught\n"$e;
95}
96
97// Continue execution
98var_dump($o); // Null
99echo "\n\n";
100
101
102// Example 4
103try {
104    $o new TestException();
105catch (Exception $e) {        // Skipped, no exception
106    echo "Default Exception caught\n"$e;
107}
108
109// Continue execution
110var_dump($o); // TestException
111echo "\n\n";
112?>
113
114