8
8
9
9
namespace DevNet \Core \Middlewares ;
10
10
11
- use DevNet \System \ MethodTrait ;
11
+ use DevNet \Core \ Diagnostics \ ExceptionHandler ;
12
12
use DevNet \Http \Message \HttpContext ;
13
13
use DevNet \Http \Middleware \IMiddleware ;
14
14
use DevNet \Http \Middleware \RequestDelegate ;
15
- use DevNet \Core \ View \ ViewManager ;
15
+ use DevNet \System \ MethodTrait ;
16
16
use Throwable ;
17
17
18
18
use function DevNet \System \await ;
@@ -22,10 +22,12 @@ class ExceptionHandlerMiddleware implements IMiddleware
22
22
use MethodTrait;
23
23
24
24
private ?string $ errorHandlingPath ;
25
+ private ExceptionHandler $ handler ;
25
26
26
27
public function __construct (?string $ errorHandlingPath = null )
27
28
{
28
29
$ this ->errorHandlingPath = $ errorHandlingPath ;
30
+ $ this ->handler = new ExceptionHandler ();
29
31
}
30
32
31
33
public function async_invoke (HttpContext $ context , RequestDelegate $ next ): void
@@ -59,59 +61,8 @@ public function async_invoke(HttpContext $context, RequestDelegate $next): void
59
61
}
60
62
61
63
// Display the error exception page report.
62
- $ data = $ this ->parse ($ error );
63
- $ view = new ViewManager (__DIR__ . '/Diagnostics ' );
64
- await ($ context ->Response ->writeAsync ($ view ->render ('ExceptionView ' , $ data )));
65
- }
66
- }
67
-
68
- public function parse (Throwable $ error ): array
69
- {
70
- $ severities = [
71
- E_ERROR => 'Fatal Error ' ,
72
- E_WARNING => 'Warning ' ,
73
- E_PARSE => 'Parse Error ' ,
74
- E_NOTICE => 'Notice ' ,
75
- E_CORE_ERROR => 'Core Error ' ,
76
- E_CORE_WARNING => 'Core Warning ' ,
77
- E_COMPILE_ERROR => 'Compile Error ' ,
78
- E_COMPILE_WARNING => 'Compile Warning ' ,
79
- E_USER_ERROR => 'User Error ' ,
80
- E_USER_WARNING => 'User Warning ' ,
81
- E_USER_NOTICE => 'User Notice ' ,
82
- E_STRICT => 'Strict Error ' ,
83
- E_RECOVERABLE_ERROR => 'Recoverable Error ' ,
84
- E_DEPRECATED => 'Deprecated ' ,
85
- E_USER_DEPRECATED => 'User Deprecated '
86
- ];
87
-
88
- $ trace = $ error ->getTrace ();
89
- if ($ error instanceof \ErrorException) {
90
- $ severity = $ severities [$ error ->getSeverity ()];
91
- } else {
92
- $ severity = $ severities [E_ERROR ];
64
+ $ report = $ this ->handler ->handle ($ error );
65
+ await ($ context ->Response ->writeAsync ($ report ));
93
66
}
94
-
95
- $ firstFile = $ trace [0 ]['file ' ] ?? null ;
96
-
97
- if ($ error ->getFile () == $ firstFile ) {
98
- array_shift ($ trace );
99
- }
100
-
101
- if ($ error ->getCode () == 0 ) {
102
- $ code = '' ;
103
- } else {
104
- $ code = $ error ->getCode ();
105
- }
106
-
107
- $ data ['error ' ] = $ severity ;
108
- $ data ['message ' ] = $ error ->getMessage ();
109
- $ data ['class ' ] = get_class ($ error );
110
- $ data ['code ' ] = $ code ;
111
- $ data ['file ' ] = $ error ->getFile ();
112
- $ data ['line ' ] = $ error ->getLine ();
113
- $ data ['trace ' ] = $ trace ;
114
-
115
- return $ data ;
116
67
}
117
68
}
0 commit comments