当你抛出一个异常时,你没有命名它,这是为什么?我读到这是一个对象,你不需要将一个对象分配给变量吗?例如
throw new Exception('Division by zero.');
这是如何工作的:
catch (Exception $e){
//do something
}
异常$e是什么意思,这是声明对象的某种简写吗?
throw
只是一个关键字,您需要跟随类型为 Exception
的对象或基于 Exception
类的另一个类。Exception
类构造函数采用一个 string
参数,该参数使用该异常消息实例化Exception
对象。
catch
块基本上用作在 throw
关键字后使用 Exception
对象调用的方法。catch 块将Exception
对象作为参数,在本例中,该参数在catch block
内命名为 $e
。
这是Exception
类construct
:
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
在此处阅读有关异常类的更多信息
如果你愿意,你甚至可以在抛出Exception
对象之前命名它:
try {
$ex = new Exception('Test exception.');
throw $ex;
} catch (Exception $e) {
echo "Cacthed exception.";
}
是的,它是一个对象。 catch (Exception $e) {}
的意思是"捕获任何属于"异常"类或将其作为其父级之一的异常对象,并将其存储在变量$e
中"。
然后在{}
块中,您可以相应地处理它(例如,写入echo $e->getMessage();
.
您可以捕获任何类型的异常 - 例如,catch (InvalidArgumentException $e)
将仅捕获类型 InvalidArgumentException
的异常,而catch (Exception $e)
将捕获任何类型的异常,包括 InvalidArgumentException
。