仓酷云

标题: PHP教程之php5异常处置详解 [打印本页]

作者: 蒙在股里    时间: 2015-2-3 23:53
标题: PHP教程之php5异常处置详解
在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。   1 起首是try,catch

<?php
&#36;path = "D:\\\\in.txt";
try //检测异常
{
file_open(&#36;path);
}
catch(Exception &#36;e) //捕捉异常
{
echo &#36;e->getMessage();
}

function file_open(&#36;path)
{
if(!file_exists(&#36;path)) //假如文件没法找到,抛出异常对象
{
throw new Exception("文件没法找到", 1);
}

if(!fopen(&#36;path, "r")) //假如文件没法翻开,抛出异常对象
{
throw new Exception("文件没法翻开", 2);
}
}
?>
注重用&#36;e->getMessage()输入异常信息.
2 输入异常完全信息

<?php
&#36;path = "D:\\\\in.txt";

try
{
file_open(&#36;path); //测验考试翻开文件
}
catch(Exception &#36;e)
{
echo "异常信息:".&#36;e->getMessage()."\\n"; //前往用户自界说的异常信息
echo "异常代码:".&#36;e->getCode()."\\n"; //前往用户自界说的异常代码
echo "文件名:".&#36;e->getFile()."\\n"; //前往产生异常的PHP法式文件名
echo "异常代码地点行".&#36;e->getLine()."\\n"; //前往产生异常的代码地点行的行号
echo "传递线路:";
print_r(&#36;e->getTrace()); //以数组模式前往跟踪异常每步传递的线路
echo &#36;e->getTraceAsString(); //前往格局化成字符串的getTrace函数信息
}

function file_open(&#36;path)
{
if(!file_exists(&#36;path)) //假如文件不存在,则抛失足误
{
throw new Exception("文件没法找到", 1);
}

if(!fopen(&#36;path, "r"))
{
throw new Exception("文件没法翻开", 2);
}
}
?>


  扩大异常,即自界说异常

<?php
class FileExistsException extends Exception{} //用于处置文件不存在异常的类
class FileOpenException extends Exception{} //用于处置文件不成读异常的类

&#36;path = "D:\\\\in.txt";

try
{
file_open(&#36;path);
}
catch(FileExistsException &#36;e) //假如发生FileExistsException异常则提醒用户确认文件地位
{
echo "法式在运转过程当中产生了异常:".&#36;e->getMessage()."\\n";
echo "请确认文件地位。";
}
catch(FileOpenException &#36;e) //假如发生FileOpenException异常则提醒用户确认文件的可读性
{
echo "法式在运转过程当中产生了异常:".&#36;e->getMessage()."\\n";
echo "请确认文件的可读性。";
}
catch(Exception &#36;e)
{
echo "[未知异常]";
echo "异常信息:".&#36;e->getMessage()."\\n"; //前往用户自界说的异常信息
echo "异常代码:".&#36;e->getCode()."\\n"; //前往用户自界说的异常代码
echo "文件名:".&#36;e->getFile()."\\n"; //前往产生异常的PHP法式文件名
echo "异常代码地点行".&#36;e->getLine()."\\n"; //前往产生异常的代码地点行的行号
echo "传递线路:";
print_r(&#36;e->getTrace()); //以数组模式前往跟踪异常每步传递的线路
echo &#36;e->getTraceAsString(); //前往格局化成字符串的getTrace函数信息
}

function file_open(&#36;path)
{
if(!file_exists(&#36;path))
{
throw new FileExistsException("文件没法找到", 1); //抛出FileExistsException异常对象
}

if(!fopen(&#36;path, "r"))
{
throw new FileOpenException("文件没法翻开", 2); //抛出FileOpenException异常对象

}
}
?>
4 重抛异常给下层

<?php
class FileExistsException extends Exception{} //用于处置文件不存在异常的类
class FileOpenException extends Exception{} //用于处置文件不成读异常的类

&#36;path = "D:\\\\in.txt";

try
{
file_open(&#36;path);
}
catch(FileExistsException &#36;e) //假如发生FileExistsException异常则提醒用户确认文件地位
{
echo "法式在运转过程当中产生了异常:".&#36;e->getMessage()."\\n";
echo "请确认文件地位。";
}
catch(FileOpenException &#36;e) //假如发生FileOpenException异常则提醒用户确认文件的可读性
{
echo "法式在运转过程当中产生了异常:".&#36;e->getMessage()."\\n";
echo "请确认文件的可读性。";
}
catch(Exception &#36;e)
{
echo "[未知异常]";
echo "异常信息:".&#36;e->getMessage()."\\n"; //前往用户自界说的异常信息
echo "异常代码:".&#36;e->getCode()."\\n"; //前往用户自界说的异常代码
echo "文件名:".&#36;e->getFile()."\\n"; //前往产生异常的PHP法式文件名
echo "异常代码地点行".&#36;e->getLine()."\\n"; //前往产生异常的代码地点行的行号
echo "传递线路:";
print_r(&#36;e->getTrace()); //以数组模式前往跟踪异常每步传递的线路
echo &#36;e->getTraceAsString(); //前往格局化成字符串的getTrace函数信息
}

function file_open(&#36;path)
{
try
{
if(!file_exists(&#36;path))
{
throw new FileExistsException("文件没法找到", 1);
}

if(!fopen(&#36;path, "r"))
{
throw new FileOpenException("文件没法翻开", 2);
}
}
catch(Exception &#36;e) //捕捉异常
{
echo "file_open函数在运转过程当中呈现异常";
throw &#36;e; //重掷异常
}
}
?>
大部分语言的基础,不是说c有多好,而是c相对起手容易学,让你认为这个是编程语言,
作者: 金色的骷髅    时间: 2015-2-4 06:57
兴趣是最好的老师,百度是最好的词典。
作者: 小魔女    时间: 2015-2-9 03:43
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 蒙在股里    时间: 2015-2-20 23:59
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 若相依    时间: 2015-3-6 19:15
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 莫相离    时间: 2015-3-6 22:13
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 仓酷云    时间: 2015-3-11 13:58
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者: 分手快乐    时间: 2015-3-18 16:38
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 透明    时间: 2015-3-21 13:14
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 谁可相欹    时间: 2015-3-28 01:32
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者: 愤怒的大鸟    时间: 2015-4-6 04:24
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
作者: 再见西城    时间: 2015-4-6 18:09
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者: 爱飞    时间: 2015-4-7 16:25
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 乐观    时间: 2015-4-11 01:11
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 小女巫    时间: 2015-4-21 21:45
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 若天明    时间: 2015-4-29 18:14
兴趣是最好的老师,百度是最好的词典。
作者: 冷月葬花魂    时间: 2015-5-1 22:12
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 变相怪杰    时间: 2015-5-2 11:37
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 再现理想    时间: 2015-5-7 14:57
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2