3

これはロングショットの質問ですが、if ブロック内でエラーが発生した場合、php で「if」ステートメントを終了して「else」ステートメントに進む方法はありますか?

if ($condition == "good")
{
//do method one

//error occurs during method one, need to exit and continue to else 

}

else 
{
//do method two
}

もちろん、最初の if 内で入れ子になった if を実行することは可能ですが、それはハッキーに思えます。

ティア

4

8 に答える 8

7
try {
    //do method one

    //error occurs during method one, need to exit and continue to else 
    if ($condition != "good") {
        throw new Exception('foo');
    }
} catch (Exception $e) {
    //do method two

}
于 2013-08-28T21:15:00.767 に答える
3

コードを複製しないように、関数を使用するだけです。

if ($condition == "good") {
    //do method one
    //error occurs during method one
    if($error == true) {
        elsefunction();
    }
} else {
    elsefunction();
}

function elsefunction() {
    //else code here
}
于 2013-08-28T21:15:18.073 に答える
2

それは可能であるべきですか?とにかく、あなたはそれをに変更することを検討するかもしれません。

$error = "";
if ($condition == "good") {
 if (/*errorhappens*/) { $error = "somerror"; }
}
if (($condition != "good") || ($error != "") ) {
 //dostuff
}
于 2013-08-28T21:17:38.300 に答える
1

成功時とエラー時methodOne()に返すように変更できます。truefalse

if($condition == "good" && methodOne()){
  // Both $condition == "good" and methodOne() returned true
}else{
  // Either $condition != "good" or methodOne() returned false
}
于 2013-08-28T21:15:44.507 に答える
0

あなたは本当にこれが必要ですか?私はノーだと思います...しかし、あなたはハッキングできます..

do{

   $repeat = false;

   if ($condition == "good")
   {
      //do method one
      $condition = "bad";
      $repeat = true;

    }    
    else 
    {
       //do method two
    }

}while( $ok ) ;

切り分け方を教えて...

于 2013-08-28T21:25:54.023 に答える