PHP Conference Japan 2024

Exception::__construct

(PHP 5, PHP 7, PHP 8)

Exception::__construct建構例外

說明

public Exception::__construct(string $message = "", int $code = 0, ?Throwable $previous = null)

建構 Exception。

參數

message

要丟出的例外訊息。

code

例外代碼。

previous

用於例外鏈的前一個例外。

注意: 如果屬性 $code 和 $message 已經設定,則從子類別呼叫 Exception 類別的建構函式會忽略預設引數。

註釋

注意:

message 並*非*二進位安全。

新增筆記

使用者貢獻的筆記 2 則筆記

talksonweb at gmail dot com
11 年前
提供給還沒做過例外鏈接的人參考,以下是一個範例。

這允許您將先前的例外添加到下一個例外,並在最後提供發生的詳細資訊。這在較大型的應用程式中很有用。

<?php
function theDatabaseObj(){
if(
database_object ){
return
database_object;
}
else{
throw new
DatabaseException("無法連線到資料庫");
}
}

function
updateProfile( $userInfo ){
try{
$db = theDatabaseObj();
$db->updateProfile();
}
catch(
DatabaseException $e ){
$message = "使用者 :" . $userInfo->username . " 無法更新他的個人資料";
/* 注意 '$e'。我正在將先前的例外添加到此例外。稍後我可以詳細查看
問題的起因。最後,數字 '12' 是一個例外代碼。我可以使用它來分類我的
例外,或者根本不使用它。 */
throw new MemberSettingsException($message,12,$e);
}
}

try{
updateProfile( $userInfo );
}
catch(
MemberSettingsException $e ){
// 這將提供我們上面收集的所有資訊。
echo $e->getTraceAsString();
}
?>
mattsch at gmail dot com
11 年前
請注意,雖然 $previous 在提供例外鏈接和更好的追蹤性方面非常有用,但 PHP 內部例外(例如 PDOException、ReflectionException 等)在 PHP 內部調用時並未考慮 $previous。

因此,如果您的程式碼拋出一個例外,從中恢復,然後捕捉到這些 PHP 內部例外之一,從中恢復並拋出另一個例外,則在調用 getPrevious 時,您將不知道拋出的第一個例外。

參見:https://bugs.php.net/bug.php?id=63873
To Top