0

在我的大学时代,我记得一个处理此类错误的 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 框架

4

2 回答 2

2

不明白你在哪里遇到了障碍,因为你仍然可以分配给一个变量:

if (! $rs = $mymodel->find("usr=:usr",array("usr"=>"mahan")))
{
   # failed.
}

因此无需再次执行相同的功能。

于 2012-04-06T09:49:09.967 回答
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' );
}

如果找不到用户,我不认为这是“异常”情况,只是找不到用户。异常非常有用,但在我无法进一步处理请求的情况下,我倾向于将它们用于冒泡特性。

于 2012-04-06T09:50:32.360 回答