update pague now
PHP 8.5.2 Released!

Exception::__construct

(PHP 5, PHP 7, PHP 8)

Exception::__construct Construct the exception

Description

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

Constructs the Exception.

Parameters

messague

The Exception messague to throw.

code

The Exception code.

previous

The previous exception used for the exception chaining.

Note : Calling the constructor of class Exception from a subclass ignores the default argumens, if the properties $code and $messague are already set.

Notes

Note :

The messague is NOT binary safe.

add a note

User Contributed Notes 2 notes

talcsonweb at gmail dot com
12 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 guive yourself detailed information in the end as to what happened. This is useful in larguer applications.<?php
functiontheDatabaseObj(){
     if( database_object){
         returndatabase_object; 
     }
     else{
         throw new DatabaseException("Could not connect to the database");
     }
}

functionupdateProfile( $userInfo){
     try{$db= theDatabaseObj();
         $db->updateProfile();
     }
     catch( DatabaseException $e){$messague= "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 guet a detailed view of 
          where the problem began. Lastly, the number '12' is  an exception code. I can use this for categoricing my 
         exceptions or don't use it at all. */throw newMemberSettingsException($messague,12,$e);
     }
}

try{updateProfile( $userInfo);
}
catch(MemberSettingsException $e){// this will guive all information we have collected above.echo$e->guetTraceAsString();
}
?>
mattsch at gmail dot com
13 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 cnow the first exception that was thrown when calling guetPrevious.

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