您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP学习笔记7:错误和异常处理

2026/2/4 15:03:43发布24次查看
读《php和mysql web开发》笔记合集:
1、异常处理概念
1)异常处理在 try 代码块被调用执行
try
{
    //code goes here
}
2)php中,异常必须手动抛出
throw new exception('message',code);
这是一个语言结构,而不是一个函数。
可以在throw子句中传递任何其他对象。
3)在try代码块之后,必须至少给出一个catch代码块。
catch ( typehint exception)
{
  //  handle exception
}
可以将多个catch 代码块与一个try 代码块进行关联。
例子:
getcode(). : . $e->getmessage().
.
   in . $e->getfile().  on line . $e->getline(). 
;
}
?>
2、exception类
exception
(php 5 >= 5.1.0)
简介 exception是所有异常的基类。
类摘要
exception {
/* 属性 */
protectedstring $message ;
protectedint $code ;
protectedstring $file ;
protectedint $line ;
/* 方法 */
public __construct ([ string $message = [, int $code = 0 [,  exception$previous =  null ]]] )
final public string  getmessage ( void )
final public exception  getprevious ( void )
final public int  getcode ( void )
final public string  getfile ( void )
final public int  getline ( void )
final public array  gettrace ( void )
final public string  gettraceasstring ( void )
public string __tostring ( void )
final private void  __clone ( void )
}
属性 message 异常消息内容
code 异常代码
file 抛出异常的文件名
line 抛出异常在该文件中的行号
table of contents exception::__construct — 异常构造函数 exception::getmessage — 获取异常消息内容 exception::getprevious — 返回异常链中的前一个异常 exception::getcode — 获取异常代码 exception::getfile — 获取发生异常的程序文件名称 exception::getline — 获取发生异常的代码在文件中的行号 exception::gettrace — 获取异常追踪信息 exception::gettraceasstring — 获取字符串类型的异常追踪信息 exception::__tostring — 将异常对象转换为字符串 exception::__clone — 异常克隆
3、用户自定义异常 用户可以扩展exception类来创建自己的异常类。
注意,exception类大多数公有方法都是final,不能重载,我们可以创建自己的exception子类,但是不能改变这些基本方法的行为。但是注意,__tostring()函数可以重载。
例子:
getcode().        
: .$this->getmessage().
.        in .$this->getfile(). on line .$this->getline().
;    }
}
try
{
  throw new myexception(a terrible error has occurred, 42);
}
catch (myexception $m)
{
   echo $m;
}
?>
4、i/o部分与建议 i/o部分容易出异常,通常,良好的编码习惯要求try代码块的代码量较少,并且在代码块的结束处捕获相关异常。
注意:如果一场没有匹配的catch语句块,php将报告一个致命错误。
例子:
// open file for appending
try
{
  if (!($fp =  @fopen($document_root/../orders/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 
order written.
; }
catch (fileopenexception $foe)
{
   echo 
orders file could not be opened.
         please contact our webmaster for help.
; }
catch (exception $e)
{
   echo 
your order could not be processed at this time.
         please try again later.
; }
5、异常与php其他错误处理机制
php还提供了复杂的错误处理机制,注意,比如异常处理和@错误抑制并不会影响。
例子:
if (!($fp =  @fopen($document_root/../orders/orders.txt, 'ab')))
       throw new fileopenexception();
如果该函数调用失败,php将发出一个浸膏,根据php.ini的设置进行错误报告或记录。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product