PHP里的try/catch和set_exception_handler的执行顺序

在PHP里,try/catch和set_exception_handler都是用来捕获异常的,但是如果同时定义了这两个的话,谁会先执行呢?

如下代码:

set_exception_handler('myException');

function test($a) {
	if ($a > 1) {
		throw new Exception('the param is illegal !', 123);
	}

	echo $a;
}

try {
	test(2);
} catch (Exception $e) {
	echo 'I am try/catch.';
}

function myException($e) {
	echo 'I am set_exception_handler.';
}

输出结果:

I am try/catch.

结论:

set_exception_handler是用来处理所有未被捕获的异常。

标签: PHP

添加新评论