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
}
添加注释

用户贡献注释 2 个注释

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(); // 创建 username 字段
$tasks->do(); // 创建 userpass 字段
$tasks->do(); // 创建 Add 按钮
$tasks->do(); // 创建 OK 按钮
$tasks->do(); // 致命错误: 未捕获的 UnderflowException 在 ...
evguenia dot chagnon at gmail dot com
7 年前
UnderflowException 处理由于值过小而无法保持精度导致的精度损失异常。在 PHP 中,这可能发生在使用浮点数时

echo (1-0.9) // 0.1
echo (1-0.99) // 0.01
echo (1-0.999) // 0.001
echo (1-0.9999) // 9.9999999999989E-05
echo (1-0.99999) // 9.9999999999545E-06
echo (1-0.999999) // 1.0000000000288E-06
To Top