Hi all, I'm having a brain freeze with some simple code that I wrote and now trying to refactor. I have a block of code that looks like this: public function backup() { $fname = "$this->dbName.sql.$this->zip"; $this->cmd = "mysqldump -Q -u $this->dbUser -p$this->dbPass $this->dbName 2>&1 > {$this->dest}/{$this->dbName}.{$this->lastId}.sql"; $res = shell_exec("$this->cmd"); error_log("First res: ".$res); if(!$res) { $this->cmd = ($this->zip==="bz2") ? "bzip2 {$this->dest}/{$this->dbName}.{$this->lastId}.sql 2>&1" : "gzip {$this->dest}/{$this->dbName}.{$this->lastId}.sql 2>&1"; $res = shell_exec("$this->cmd"); error_log("second error: ".$res); return !$res; } return FALSE; } Now instead of that FALSE, is there a way I can pass FALSE with a particular error message? This is because on the other end I have code that looks like this: if($mysqlDump->backup()) { $success = array('success' => '1'); $sqlres = mysql_query($sql, $link) or die(json_message('error',mysql_error())); shell_exec('/usr/bin/touch /tmp/build_transfer'); mysql_close($link); return '(' . json_encode($success) . ')'; } else { $fail = array('fail' => $res); return '(' . json_encode($fail) . ')'; } I'd ultimately like to be able to deliver a failure message from the return value...and properly catch that message so I can send it back in JSON format to the client browser to report what the error is. Think I should approach this with some try{..} catch code? Am I overlooking something really simple? :-) Thanks for your advice.