Exception::__construct

(PHP 5, PHP 7, PHP 8)

Exception::__constructİstisna oluşturur

Açıklama

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

İstisna oluşturur.

Bağımsız Değişkenler

message

Oluşturulan istisna iletisi.

code

İstisna kodu.

previous

İstisna zincirindeki önceki istisna.

Bilginize: $code ve $message özellikleri zaten atanmışsa, istisna kurucusunu bir alt sınıftan çağırmak öntanımlı bağımsız değişkenleri yok sayar.

Notlar

Bilginize:

message bağımsız değişkeni ikil olarak güvenilir değildir.

add a note add a note

User Contributed Notes 3 notes

up
45
talksonweb at gmail dot com
11 years ago
For those that haven't done exception chaining. Here's an example.

This allows you to add the previous exception to the next one and give yourself detailed information in the end as to what happened. This is useful in larger applications.

<?php
function theDatabaseObj(){
     if(
database_object ){
         return
database_object;
     }
     else{
         throw new
DatabaseException("Could not connect to the database");
     }
}

function
updateProfile( $userInfo ){
     try{
        
$db = theDatabaseObj();
        
$db->updateProfile();
     }
     catch(
DatabaseException $e ){
        
$message = "The user :" . $userInfo->username . " could not update his profile information";
        
/* notice the '$e'. I'm adding the previous exception  to this exception. I can later get a detailed view of
          where the problem began. Lastly, the number '12' is  an exception code. I can use this for categorizing my
         exceptions or don't use it at all. */
        
throw new MemberSettingsException($message,12,$e);
     }
}

try{
    
updateProfile( $userInfo );
}
catch(
MemberSettingsException $e ){
    
// this will give all information we have collected above.
    
echo $e->getTraceAsString();
}
?>
up
3
mattsch at gmail dot com
11 years ago
Be aware that while $previous is quite useful in providing exception chaining and better traceability, none of the internal php exceptions (e.g. PDOException, ReflectionException, etc) are called internally within php with $previous in mind. 

So if your code throws an exception, recovers from it, then catches one of these internal php exceptions, recovers from it and throws another exception, you will not know the first exception that was thrown when calling getPrevious.

See: https://bugs.php.net/bug.php?id=63873
up
-6
ryan dot jentzsch at gmail dot com
8 years ago
Note that the code parameter is not the same as exit($code).
Also, the code argument in PHP 7 (possibly earlier versions) is cast to an int including negative values. The code below is completely valid:

<?php
try
{
    throw new \
Exception('Testing', -12.12);
}
catch (\
Exception $exception)
{
   
$code = $exception->getCode();
    if (
$code < 0)
    {
        exit(
abs($code));
    }
}
To Top