background image

// 重定义构造器使 message 变为必须被指定的属性 
public

 

function

 __construct(

$message

$code

 = 0) { 

// 自定义的代码 
// 确保所有变量都被正确赋值 

parent::__construct(

$message

$code

); 

// 自定义字符串输出的样式 
public

 

function

 __toString() { 

return

 

__CLASS__

 . ": [{$this->code}]: {$this->message}\n"; 

public

 

function

 customFunction() { 

echo

 "A Custom function for this type of exception\n"; 



 
异常处理的基本思想是代码在

try

代码被调用执行。如果

try

码块出现错误,我们可以执行一

个抛出异常的处理。某些编程语言,如

java,,在特定情况下将自动抛出异常。在 php 中,异

常必须手动抛出。可以使用如下方式抛出一个异常:

 

  

Throw 

new

 Exception(‘message',code); 

  

Throw 关键字将触发异常处理机制,它是一个语言结构,而不是一个函数,但是必须

给它传递一个值。它要求一个接受对象。在最简单的情况下,可以实例化一个内置的
Exception 类。 
  最后,在

try

代码之后,必须至少给出一个

catch

代码块。可以将多个

catch

代码块与一

try

代码块进行关联。如果每个

catch

代码块可以捕获一个不同类型的异常,可以使用多个

catch

代码块是有意义的。例如,如果想捕获

Exception 类的异常,代码如下 

代码如下

:

 
Catch(Exception 

$e

//handing exception 


Catch 代码捕获的对象就是导致异常并传递给

throw

语句的对象(被

throw

 语句抛出)。使用

Exception 类的实例,是不错的选择。 
Exception 类提供了如下的内置方法: 
  

Getcode()   —返回传递给构造函数的代码。 

  

GetMessage() —返回传递给构造函数的消息。 

  

getFile()     —返回产生异常代码的文件的路径 

  

getLine()    —返回产生异常的代码所在的行。 

 
注意:

 

当捕获到一个异常后,

try

()块里面的后续代码将不会继续执行,而是会尝试查找匹配的

catch

”代码块 

当抛出一个异常后,如果不进行

catch

处理,则会报

“Uncaught exception 'Exception'”错误 

代码如下

: