PHP 抛出异常
简介
Throwable 接口由 Error 和 Exception 类实现。所有预定义的 Error 类都继承自 Error 类。相应 Error 类的实例在 try 块内抛出并在相应的 catch 块内处理。
抛出错误
正常执行(当 try 块内没有抛出异常时)将在随后定义的最后一个 catch 块之后继续。
示例
<?php
function div($x, $y) {
if (!$y) {
throw new Exception('Division by zero.');
}
return $x/$y;
}
try {
echo div(10,5) . "
";
echo div(10,0) . "
";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "
";
}
// Continue execution
echo "Execution continues
";
?>输出
显示以下输出
2 Caught exception: Division by zero. Execution continues
在以下示例中,在执行函数时抛出 **TypeError**,因为没有向其传递适当的参数。显示相应的错误消息
示例
<?php
function add(int $num1, int $num2){
return $num1 + $num2;
}
try {
$value = add(1, 'one');
} catch (TypeError $e) {
echo $e->getMessage(). "
";
}
?>输出
显示以下输出
Argument 2 passed to add() must be of the type integer, string given
SPL 异常
标准 PHP 库包含预定义的异常
| LogicException | 表示程序逻辑错误的异常。 |
| BadFunctionCallException | 如果回调引用未定义的函数或缺少某些参数,则抛出此异常。 |
| BadMethodCallException | 如果回调引用未定义的方法或缺少某些参数,则抛出此异常。 |
| DomainException | 如果值不符合定义的有效数据域,则抛出此异常。 |
| InvalidArgumentException | 如果参数不是预期类型,则抛出此异常。 |
| LengthException | 如果长度无效,则抛出此异常。 |
| OutOfRangeException | 请求非法索引时抛出此异常。 |
| RuntimeException | 如果发生只能在运行时发现的错误,则抛出此异常。 |
| OutOfBoundsException | 如果值不是有效的键,则抛出此异常。 |
| OverflowException | 向已满的容器添加元素时抛出此异常。 |
| RangeException | 抛出此异常以指示程序执行期间的范围错误。除下溢/上溢以外的算术错误。 |
| UnderflowException | 对空容器执行无效操作(例如删除元素)时抛出此异常。 |
| UnexpectedValueException | 如果值与一组值不匹配,则抛出此异常。 |
以下示例显示当在 PHP 数组中找不到键时抛出的 **OutOfBoundsException**
示例
<?php
$arr=array("one"=>1, "two"=>2,"three"=>3,"four"=>4);
$key="ten";
try{
if (array_key_exists($key, $arr)==FALSE){
throw new OutOfBoundsException("key not found");}
else {
echo $arr[$key];}
}
catch (OutOfBoundsException $e){
echo $e->getMessage(). "
";
}
?>输出
显示以下输出
key not found
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP