欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php怎么捕获异常?

程序员文章站 2022-05-27 16:49:12
...
php怎么捕获异常?
有没有类似.net try catch机制?
php不能逐行调试 蛋疼!


回复讨论(解决方案)

有的 写法一样
try {

} catch (Exception $e) {
print $e->getMessage();

}

有没有类似.net try catch机制? 这个真心有~
php不能逐行调试 蛋疼! 楼主没找对ide

其实php的调试可以随时调,想在哪里调,最简单就是在哪里输出。当然zend-studio也提供了断点功能调试,但是远不如这样方便。
其实都各有各的好处,哥,还是从了吧。

#1 可爱北极熊 正解

try{	$a="sgfdfgdf";	$b= (int)$a;	echo($b);}catch(exception $e){	echo("出错啦".$e->getMessage());//这里并木有执行啊}

还需要在try{}语句块里抛出异常 throw new Exception('It is an exception!') ,然后由catch(Exception $e) 捕获。

还需要在try{}语句块里抛出异常 throw new Exception('It is an exception!') ,然后由catch(Exception $e) 捕获。 \
这样虽然能捕获到 但错误信息还要我指定啊
我要的就是错误信息啊 我都知道了还捕获个鬼啊

用echo来放点找异常,php没法啊

那就去看php的error_log啊...会有各种详细的报错信息....还有啥可catch的...

那就去看php的error_log啊...会有各种详细的报错信息....还有啥可catch的...
php的error_log在那里看?

错误大体有两种,一种是php可以捕获到的,例如语法错误。还有一种,是逻辑上的错误,这种错误机器并不能捕获,所以才会用到try catch人为捕获。
我想你说的错误只是前一种,那么打开错误提示display_errors = On,就可以看到。

还有set_exception_handle。

你这段代码没异常,当然不会执行那句

PHP code

try{
$a="sgfdfgdf";
$b= (int)$a;
echo($b);
}
catch(exception $e){
echo("出错啦".$e->getMessage());//这里并木有执行啊
}

你这段代码没异常,当然不会执行那句

引用 5 楼 telankes2000 的回复:

PHP code

try{
$a="sgfdfgdf";
$b= (int)$a;
echo($b);
}
catch(exception $e){
echo("出错啦".$e->getMessage());//这里并木有执行啊
}
整形转换错误 这还不是错误啊

这种错误系统应该是自动捕获的

咳咳,这个不是错,在php里, 自动转换

引用 14 楼 helloyou0 的回复:

你这段代码没异常,当然不会执行那句

引用 5 楼 telankes2000 的回复:

PHP code

try{
$a="sgfdfgdf";
$b= (int)$a;
echo($b);
}
catch(exception $e){
echo("出错啦".$e->getMessage());//这里并木有执行啊
……

整形转换错误 这还不是错误啊 在任何语言中,强制类型转换都不会是错误!
虽然有时你并没有得到期望的结果

php的错误异常和java的类似,不过一般都要自己去抛出:例子:
try{
$m = 0;
if($m throw new Exception('m='.$m.':小于零');
}
echo $m;
} catch(exception $e){
echo "错误[line->".($e->getLine())."]: ".($e->getMessage());
}

php弱类型 改变数据类型没有问题

让除数为0 ,就会看到抛异常了

我也有相同的疑问。
例如我在php里面用到了$_GET,但是其实并没有传入任何get参数,这个时候就会出错,我用try catch并不能捕捉到这个错误。
请问如何才能知道get出错然后进行相应的处理呢