140 likes | 258 Views
This chapter provides an in-depth exploration of exception handling concepts and structures in development tools. Key topics include the mechanics of try, throw, and catch blocks, the built-in Exception class, and the creation of user-defined exceptions. Utilizing practical examples such as in Bob's Auto Parts, we illustrate how to manage errors effectively and ensure robust code execution. The chapter also covers important debugging concepts, emphasizing the significance of error handling in software development.
E N D
IS 118 Introduction to Development Tools Chapter 7 IS 118
Things to Cover • Exception Handling • Exception Handling Concepts • Structures • Try , throw, catch • The Exception Class • User Defined Exceptions • Exceptions in Bob’s Auto Parts • Other Error handling IS 118
Exception Handling Concepts • Execute code inside of a TRY block • Try { // code to execute } • Within this code there needs to be a throw • throw new Exception (‘message’, code) • And outside the code a catch • catch (typehint exception) IS 118
Concepts - continued • So: • <?php try { // some code throw new Exception(‘A terrible error has occurred’, 42); } catch (Exception $e) { echo ‘Exception ‘. $e->getCode(). ‘; ‘. $e->getMessage(0 .’ in ‘. $e->getFile(). ‘ on line ‘.$e->getline(). ‘,br />’; } ?> IS 118
Exception class • Built-in class to help called Exception • Takes two parameters – message and code • getCode() • getMessage() • getFile() • getLine() • getTrace() • getTraceAsString() • _toString() IS 118
User Defined Exceptions • Extend the base class Exception and add your own • <?php • class fileOpenException extends Exception • { • function __toString() • { • return 'fileOpenException '. $this->getCode() • . ': '. $this->getMessage().'<br />'.' in ' • . $this->getFile(). ' on line '. $this->getLine() • . '<br />'; • } • } IS 118
User Defined Continued • class fileWriteException extends Exception • { • function __toString() • { • return 'fileWriteException '. $this->getCode() • . ': '. $this->getMessage().'<br />'.' in ' • . $this->getFile(). ' on line '. $this->getLine() • . '<br />'; • } • } IS 118
User Defined - 3 • class fileLockException extends Exception • { • function __toString() • { • return 'fileLockException '. $this->getCode() • . ': '. $this->getMessage().'<br />'.' in ' • . $this->getFile(). ' on line '. $this->getLine() • . '<br />'; • } • } • ?> IS 118
Bob’s Auto Parts • <?php • class fileOpenException extends Exception • { • function __toString() • { • return 'fileOpenException '. $this->getCode() • . ': '. $this->getMessage().'<br />'.' in ' • . $this->getFile(). ' on line '. $this->getLine() • . '<br />'; • } • } IS 118
Bob’s Auto Parts - 2 • class fileWriteException extends Exception • { • function __toString() • { • return 'fileWriteException '. $this->getCode() • . ': '. $this->getMessage().'<br />'.' in ' • . $this->getFile(). ' on line '. $this->getLine() • . '<br />'; • } • } IS 118
Bob’s Auto Parts - 3 • class fileLockException extends Exception • { • function __toString() • { • return 'fileLockException '. $this->getCode() • . ': '. $this->getMessage().'<br />'.' in ' • . $this->getFile(). ' on line '. $this->getLine() • . '<br />'; • } • } • ?> IS 118
Where does this go? • // open file for appending • try • { • if (!($fp = @fopen("orders.txt", 'ab'))) • throw new fileOpenException(); • if (!flock($fp, LOCK_EX)) • throw new fileLockException(); • if (!fwrite($fp, $outputstring, strlen($outputstring))) • throw new fileWriteException(); • flock($fp, LOCK_UN); • fclose($fp); • echo '<p>Order written.</p>'; • } IS 118
Where does it go - 2 • catch (fileOpenException $foe) • { • echo '<p><strong>Orders file could not be opened. ' • .'Please contact our webmaster for help.</strong></p>'; • } • catch (Exception $e) • { • echo '<p><strong>Your order could not be processed at this time. ' • .'Please try again later.</strong></p>'; • } IS 118
Other Error Handling • Chapter 25 discusses DEBUGGING • This is outside the scope of this course • BUT, it would be good to look at it IS 118