PHP Conference Japan 2024

UnderflowException 类

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

介绍

当对空容器执行无效操作(例如移除元素)时抛出的异常。

类概要

class UnderflowException extends RuntimeException {
/* 继承的属性 */
protected string $message = "";
private string $string = "";
protected int $code;
protected string $file = "";
protected int $line;
private array $trace = [];
private ?Throwable $previous = null;
/* 继承的方法 */
public Exception::__construct(string $message = "", int $code = 0, ?Throwable $previous = null)
final public Exception::getCode(): int
final public Exception::getFile(): string
final public Exception::getLine(): int
final public Exception::getTrace(): array
}
添加注释

用户贡献的注释 1 条注释

0
Jakub Adamczyk
2 年前
最典型的用法是与堆栈、队列或集合一起使用,例如当您排队任务、创建调用堆栈或操作 JSON、XML 等元素时。

与RuntimeException类的其他异常一样,这种类型的错误无法在(例如)您的IDE或编译器中检测到。

<?php
// 上面声明的函数
$f1 = function() { setTypeControl('username');};
$f2 = function() { setTypeControl('userpass');};
$f3 = function() { setButton('Add');};
$f4 = function() { setButton('OK');};

$tasks = new class {
private
$list;

// 创建内部队列
public function __construct() {
$this->list = new SplQueue;
}

// 添加到队列
public function add(callable $func) {
$this->list->enqueue($func);
}

// 从队列中删除并执行
public function do() {
if (
$this->list->isEmpty()) {
throw new
UnderflowException;
} else {
call_user_func($this->list->dequeue());
}
}

};

$tasks->add($f1);
$tasks->add($f2);
$tasks->add($f3);
$tasks->add($f4);

$tasks->do(); // 创建用户名字段
$tasks->do(); // 创建用户密码字段
$tasks->do(); // 创建添加按钮
$tasks->do(); // 创建确定按钮
$tasks->do(); // Fatal error: Uncaught UnderflowException in ...
To Top