有人可以解释我这个例外是如何工作的吗?
Can someone explain my how this exceptions works?
我在 Internet 上发现了一个关于异常和错误的非常有趣的问题,但我无法解决。
class MyException extends Exception {
public function __construct(string $message) {
$this -> message = $message;
}
}
class A {
public function __construct() {
throw new MyException("an error appeared");
}
}
$err = null;
try {
new A();
}
catch (MyException $err) {
throw new Exception('another error appeared');
}
catch (Exception $err) {
echo $err;
}
当我执行我收到的代码时
Fatal error: Uncaught Exception: another error appeared in C:\xampp
我不明白这是代码的问题还是它实际是这样工作的。也许你可以帮助我。
那个致命错误是针对未处理的异常?
谢谢!
是的,致命错误是针对此处未处理的异常:
$err = null;
try {
new A();
}
catch (MyException $err) {
--->throw new Exception('another error appeared');
}
catch (Exception $err) {
echo $err;
}
如果您想知道是什么导致了这种情况,请查看您的代码片段中的这一行:
$err = null;
try {
---> new A();
}
第二个 catch
块没有捕获第一个 catch
块中抛出的异常。它只能用于捕获第一个 try
块中抛出的其他类型的异常。
要捕获第二个异常,您需要添加一个嵌套的 try catch:
try {
new A();
}
catch (MyException $err) {
try {
throw new Exception('another error appeared');
}
catch (Exception $err) {
echo $err;
}
}
我在 Internet 上发现了一个关于异常和错误的非常有趣的问题,但我无法解决。
class MyException extends Exception {
public function __construct(string $message) {
$this -> message = $message;
}
}
class A {
public function __construct() {
throw new MyException("an error appeared");
}
}
$err = null;
try {
new A();
}
catch (MyException $err) {
throw new Exception('another error appeared');
}
catch (Exception $err) {
echo $err;
}
当我执行我收到的代码时
Fatal error: Uncaught Exception: another error appeared in C:\xampp
我不明白这是代码的问题还是它实际是这样工作的。也许你可以帮助我。 那个致命错误是针对未处理的异常? 谢谢!
是的,致命错误是针对此处未处理的异常:
$err = null;
try {
new A();
}
catch (MyException $err) {
--->throw new Exception('another error appeared');
}
catch (Exception $err) {
echo $err;
}
如果您想知道是什么导致了这种情况,请查看您的代码片段中的这一行:
$err = null;
try {
---> new A();
}
第二个 catch
块没有捕获第一个 catch
块中抛出的异常。它只能用于捕获第一个 try
块中抛出的其他类型的异常。
要捕获第二个异常,您需要添加一个嵌套的 try catch:
try {
new A();
}
catch (MyException $err) {
try {
throw new Exception('another error appeared');
}
catch (Exception $err) {
echo $err;
}
}