php接口和异常处理
来源:互联网 发布:取消数据库紧急模式 编辑:程序博客网 时间:2024/06/05 09:50
接着昨天的部分,php面向对象也提供了接口这个东西,单从接口这一块来说php和java基本上没区别,不论java还是php接口从一定程度上弥补了类单继承的不足,在不破坏类层级关系的前提下减小了耦合度.废话不说了来看一下java和php的相同点和不同点吧
1.php的接口里面不允许出现静态变量但是可以有常量,php的类内部常量用const来声明,java里允许有静态常量
2.java可以使用final来声明一个常量,但是php使用的是const
下面这些地方java和php一致
3.如果类用final修饰则该类不能被继承,如果用来声明方法表示方法不能被重写
4.php的类也可以同时继承一个类,并实现多个接口;同样的接口也可以继承接口
差不多也就这些,下面来继续研究php的错误处理和异常处理
说句真心话php的错误和异常处理真不怎地,比起java来简直就是弱爆了,个人感觉php的这一块还不成熟
一 php的错误处理
(1) 使用die()来处理,就像下面这样
<?php function main(){ if(!file_exists("01.txt")){ die("文件不存在"); }else{ $f=fopen("01.txt","r"); fclose($f); } } main();?>
当然还有其他的写法,大家自己去写就好。
(2)顶层错误处理器
这种方式一般就是用于改写php的错误处理机制,就是说我们自己可以自己定义一个function,之后使用set_error_handler("自己的处理器",错误级别),这里一般不要使用E_USER的这种错误级别
(3)错误触发器,这种情况一般用于自定义的错误
定义和用法
trigger_error() 函数创建用户定义的错误消息。
trigger_error() 用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用。同样的set_error_handler()也有2个参数第一个是处理器名称,第二个是级别,这里级别有这么几种
- E_USER_ERROR
- E_USER_WARNING
- E_USER_NOTICE
error_log(error,type,destination,headers)error就是错误信息,一般是字符串,类型有这么几种
- 0 - 默认。根据在 php.ini 文件中的 error_log 配置,错误被发送到服务器日志系统或文件。
- 1 - 错误被发送到 destination 参数中的地址。只有该类型使用 headers 参数。
- 2 - 通过 PHP debugging 连接来发送错误。该选项只在 PHP 3 中可用。
- 3 - 错误发送到文件目标字符串。
二 异常处理
php里这一块和java差别有点大,最重要的一点就是php里的try...catch后面不能有finally,语法如下
try{
}catch(Exception $e){
echo $e.getMessage();
}
php也像java可以声明异常,代码大致如下
<?php//create function with an exceptionfunction checkNum($number) { if($number>1) { throw new Exception("Value must be 1 or below"); } return true; }//trigger exceptioncheckNum(2);?>
异常的机制大致和java类似,如果声明了异常但是调用的地方没有捕获,异常也不会出现,php也可以自定义异常如下所示
<?phpclass customException extends Exception { public function errorMessage() { //error message $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile() .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address'; return $errorMsg; } }$email = "someone@example...com";try { //check if if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) { //throw exception if email is not valid throw new customException($email); } }catch (customException $e) { //display custom message echo $e->errorMessage(); }?>
还有一种就是异常顶级处理器set_exception_handler,用法类似这种
<?php set_exception_handler( 'exc_handler' ); function exc_handler($exception) { echo "Uncaught exception: " , $exception->getMessage(), "\n"; } function errorone() { throw new Exception("Test 1"); } function errortwo() { throw new Exception("Test 2"); } function test() { errorone(); errortwo(); } test(); test();?>
有一些情况php无法捕获到异常,例如5/0原因是php没有声明这些异常,算是php的缺陷吧。综合php,java,asp.net来看java异常处理做的还是比较出色的。
- php接口和异常处理
- 接口和异常处理
- PHP编程之旅----接口、异常处理
- PHP 错误和异常处理
- php异常和错误处理
- PHP错误和异常处理
- php异常和错误处理
- php的错误处理和异常处理
- Java接口和实现的异常处理
- php错误处理和php异常处理机制
- PHP 的错误和异常处理
- php的错误和异常处理
- PHP中的错误和异常处理
- PHP中错误和异常处理机制
- zephir-php函数和异常处理
- PHP的错误和异常处理
- PHP的错误和异常处理总结
- php中的错误和异常处理
- 实际实验中的服务器平台评测
- iOS图片拉伸的3种常见技巧
- Android的全局键(home键/长按耳机键)详解
- hdu 4598 Difference
- 学习笔记
- php接口和异常处理
- redis学习笔记五之pipeline
- 鲍尔默在微软最大的遗憾?
- 大师的blog
- hdu4611 Balls Rearrangement
- Java 二叉树排序
- 迟来的毕业答辩总结
- redis学习笔记六之发布订阅
- Linux内核空间-用户空间通信之debugfs