在我大学时代,我记得一个处理这类错误的PHP代码..
$rs = $mymodel->find("usr=:usr",array("usr"=>"mahan")) on error echo $mymodel->geterror();
但我知道上面的代码是错误的......
这是一个我不记得的错误处理代码..
也许你会建议像这样的东西
/**First code suggestion**/
if(!mymodel->find("usr=:usr",array("usr"=>"mahan"))){
$rs = mymodel->find("usr=:usr",array(":usr"=>"mahan"));
}
或者像这样
/**Second code suggestion**/
try{
$rs = mymodel->find("usr=:usr",array("usr"=>"mahan"));
}
catch(Exception $e){
dump($e);
}
我的问题是我不想重复相同的操作只是为了测试它是否会有错误(显示在第一个代码建议中)。
第二个代码建议不起作用。
我在问题中最重要的错误处理是错误的,但我认为它可以解决我的问题(我只是不记得正确的问题)...如果不告诉我你的建议。
我正在使用Yii Framework
答案 0 :(得分:2)
不知道你在哪里遇到路障,因为你仍然可以分配一个变量:
if (! $rs = $mymodel->find("usr=:usr",array("usr"=>"mahan")))
{
# failed.
}
因此无需再次执行相同的功能。
答案 1 :(得分:1)
你可能正在考虑臭名昭着的mysql_query( $query ) or die( mysql_error( ) );
结构。 PHP从未有过“on error doSomething”结构。也就是说,仍然可以使用上述结构:
<?php
function foo( ) {
return false;
}
function error( $string ) {
echo $string;
}
$rs = foo( ) or error( 'Alas' );
如果foo( )
返回false
,则表示调用error( 'Alas' );
。如果foo( )
返回任何可以求值为true的内容(例如true,int> 1,非空字符串,资源或结果集),则永远不会调用error( 'Alas' )
。
但就个人而言,我更喜欢以下构造:
<?php
function foo( ) {
return false;
}
function error( $string ) {
echo $string;
}
$rs = foo( );
if( $rs === false ) {
error( 'Alas' );
}
如果找不到用户,我不会将此视为“例外”情况,只是找不到用户。例外是非常有用的,但我倾向于在我无法再处理请求的情况下将它们用于冒泡质量。