当您抛出异常而没有命名时,为什么会这样?我读到这是一个对象,你不需要将一个对象分配给一个变量吗? e.g。
throw new Exception('Division by zero.');
这是如何运作的:
catch (Exception $e){
//do something
}
Exception $ e是什么意思,这是宣告某个对象的某种简写吗?
答案 0 :(得分:1)
throw
只是一个关键字,您需要遵循Exception
类型的对象或基于Exception
类的其他类。 Exception
类构造函数采用string
参数,该参数使用该异常消息实例化Exception
对象。
catch
块的功能基本上是在Exception
关键字之后使用throw
对象调用的方法。 catch块将Exception
对象作为参数,在这种情况下,$e
内的catch block
为Exception
。
这是construct
班public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
:
Exception
Read more about the Exception class here
如果您愿意,您甚至可以在投掷之前命名try {
$ex = new Exception('Test exception.');
throw $ex;
} catch (Exception $e) {
echo "Cacthed exception.";
}
对象:
{{1}}
答案 1 :(得分:0)
是的,这是一个对象。 catch (Exception $e) {}
表示“捕获任何类”Exception“的异常对象,或将其作为其父类之一,并将其存储在变量$e
中。
然后在{}
块中,您可以相应地处理它(例如,写echo $e->getMessage();
。
您可以捕获任何类型的异常 - 例如,catch (InvalidArgumentException $e)
将仅捕获InvalidArgumentException
类型的异常,而catch (Exception $e)
将捕获任何类型的异常,包括InvalidArgumentException
。