PHP 15:异常
看完了out_put_fns.php文件,让我们再看看db_fns.php文件。其代码非常简单,如下:
2
3 function db_connect()
4 {
5 $result = new mysqli(‘localhost‘, ‘bm_user‘, ‘password‘, ‘bookmarks‘);
6 if (!$result)
7 throw new Exception(‘Could not connect to database server‘);
8 else
9 return $result;
10 }
11
12 ?>
PHP的异常机制和Java等语言差不多。但是还是有区别的。
PHP的异常同样是以try...throw...catch来捕获异常。
在某些语言,例如C#,Java,try里的代码有的时候会自动抛出异常,但是载PHP中,你必须手动捕获这个异常。和其他语言一样,PHP也会判断合适的异常抛出,那就是后面catch的作用了。
PHO也有异常的类。让我们先看一个例子,代码如下:
1 <?php
2 try
3 {
4 throw new Exception(‘An Exception occurs here!‘,43);
5 }
6 catch(Exception $e)
7 {
8 echo ‘Exception ‘.$e->getCode().‘:‘.$e->getMessage().‘in‘.$e->getFile().‘on line‘
9 .$e->getLine().‘<br/>‘;
10
11 }
12 ?>
PHP5提供了Exception类,其构造时需要2个参数,一个是异常消息,一个是异常代码。
除了构造函数之外,它还包括以下函数。
- getCode()--返回传递给构造函数的代码。
- getMessage()--返回给构造函数的消息。
- getFile()--返回产生异常的代码的文件的完整路径。
- getLine()--返回产生异常代码的行号。
- getTrace()--返回一个产生异常的代码以及回退路径,这个和.net里的异常,当你编写一个ASP.NET页面时,如果发生异常,.net会将错误的信息,所在的文件,以及回退路径信息全部提供给你。
- getTraceAsString()--与getTrace()一样,只不过它将格式化为字符串。
- __toString()--允许简单的显示Exception对象,并且给出所有以上方法给出的信息。
幸运的是PHP提供了Exception的代码。让我们一睹为快。
2 class Exception
3 {
4 protected $message = ‘Unknown exception‘; // exception message
5 protected $code = 0; // user defined exception code
6 protected $file; // source filename of exception
7 protected $line; // source line of exception
8
9 function __construct($message = null, $code = 0);
10
11 final function getMessage(); // message of exception
12 final function getCode(); // code of exception
13 final function getFile(); // source filename
14 final function getLine(); // source line
15 final function getTrace(); // an array of the backtrace()
16 final function getTraceAsString(); // formated string of trace
17
18 /* Overrideable */
19 function __toString(); // formated string for display
20 }
21 ?>
2 try
3 {
4 throw new user_defined_exception(‘An Exception occurs here!‘,43);
5 }
6 catch(user_defined_exception $e)
7 {
8 echo $e;
9 //echo ‘Exception ‘.$e->getCode().‘:‘.$e->getMessage().‘in‘.$e->getFile().‘on line‘
10 //.$e->getLine().‘<br/>‘;
11
12 }
13 class user_defined_exception extends Exception
14 {
15 public function __toString()
16 {
17 return ‘<table border><tr><td>
18 <strong><font color=red>Exception ‘.$this->getCode().‘:‘.$this->getMessage().‘in‘.$this->getFile().‘on line‘
19 .$this->getLine().‘</font></strong></td?</tr></table>‘;
20 }
21 }
22 ?>
Exception 43:An Exception occurs here!inG:\Apache Group\Apache2.2\htdocs\test.phpon line4 |
总结,本章讨论了PHP异常的特点,与其他语言的一些不同之处。最后还介绍了自定义的异常。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。