Take the following function as an example of what I want to do:
JavaScript
x
public function save() {
$this->connect('wb');
try {
if(!$this->lock())
throw new Exception("Unable to acquire configuration locks");
if (!$backup = $this->backup())
throw new Exception("Failed to create configuration backup");
try {
if(!fwrite($this->_pointer, $this->dump("string")));
throw new Exception("Error occured while writing to configuration");
$this->unlock();
$this->disconnect();
} catch (Exception $e) {
if(rename ($backup, $this->_file))
$e .= PHP_EOL."Successfully restored configuration from backup";
else
$e .= PHP_EOL."Failed to restore configuration from backup";
$this->unlock();
$this->disconnect();
throw $e;
}
} catch (Exception $e) {
echo PHP_EOL, $e->getMessage();
}
}
I have nested try()
and catch()
statements. An exception is thrown from the inner-most and is caught, I then perform some functions and throw another exception. Notice where I write $e .=
, I understand this is the incorrect syntax. What I want to do is append the string to the exception’s $e->getMessage()
.
How would I go about doing this?
Advertisement
Answer
Create you own exception class and create method for appending string to the message.
JavaScript
<?php
class SuperException extends Exception
{
public function AppendToMessage($msg)
{
// $this->message is inherited from Exception class,
// where it is protected field (member) of the class
$this->message .= $msg;
}
}
?>