PHP Conference Japan 2024

UnderflowException 類別

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

簡介

在空的容器上執行無效操作時拋出的例外,例如移除元素。

類別概要

class UnderflowException extends RuntimeException {
/* 繼承的屬性 */
protected 字串 $message = "";
private 字串 $string = "";
protected 整數 $code;
protected 字串 $file = "";
protected 整數 $line;
private 陣列 $trace = [];
private ?Throwable $previous = null;
/* 繼承的方法 */
public Exception::__construct(字串 $message = "", 整數 $code = 0, ?Throwable $previous = null)
final public Exception::getCode(): 整數
final public Exception::getFile(): 字串
final public Exception::getLine(): 整數
final public Exception::getTrace(): 陣列
}
新增註記

使用者貢獻的註記 1 則註記

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 於 ...
To Top