gpt4 book ai didi

php - 使用 PHP 返回有用的错误消息

转载 作者:搜寻专家 更新时间:2023-10-31 20:35:10 26 4
gpt4 key购买 nike

我不明白如何使用 PHP 正确创建有用的错误消息并将其返回到网络。

我有课

class Foo {
const OK_IT_WORKED = 0;
const ERR_IT_FAILED = 1;
const ERR_IT_TIMED_OUT = 3;

public function fooItUp(){
if(itFooed)
return OK_IT_WORKED;
elseif(itFooedUp)
return ERR_IT_FAILED;
elseif(itFooedOut)
return ERR_IT_TIMED_OUT;
}
}

还有另一个类使用这个类做一些有用的事情,然后将结果返回给用户。我只是想知道我将所有错误消息的字符串值放在哪里。

class Bar {
public function doFooeyThings(stuff){
$res = $myFoo->fooItUp();
// now i need to tell the user what happened, but they don't understand error codes
if($res === Foo::OK_IT_WORKED)
return 'string result here? seems wrong';
elseif ($res === Foo::ERR_IT_FAILED)
return Foo::ERR_IT_FAILED_STRING; // seems redundant?
elseif($res === Foo:ERR_IT_TIMED_OUT)
return $res; // return number and have an "enum" in the client (js) ?
}

}

最佳答案

您应该尽可能避免返回错误状态。而是使用异常。如果您从未使用过异常,则可以阅读有关它们的信息 here

您可以通过多种方式在您的示例中使用异常。您可以为每个错误或每个错误类别创建自定义异常。有关自定义异常的更多信息 here或者您可以创建默认 Exception 类的一个实例,将错误消息作为字符串提供给它。

下面的代码遵循第二种方法:

class Foo {
const OK_IT_WORKED = 0;
const ERR_IT_FAILED = 1;
const ERR_IT_TIMED_OUT = 3;

public function fooItUp(){
if(itFooed)
return OK_IT_WORKED;
else if(itFooedUp)
throw new Exception("It failed")
else if(itFooedOut)
throw new Exception("Request timed out");
}
}

我相信您能想到一些比我使用的更优雅的消息。无论如何,您可以继续使用 try/catch block 处理调用方方法上的这些异常:

class Bar {
public function doFooeyThings(stuff){
try
{
$res = myFoo->fooItUp();
}
catch(Exception $e)
{
//do something with the error message
}

}

}

fooItUp 抛出的任何异常都将被 catch block “捕获”并由您的代码处理。

您还应该考虑的两件事是:

  • 最好不要向您的用户显示有关错误的详细信息,因为这些信息可能会被有恶意的用户使用

  • 理想情况下,您应该有某种全局异常处理

关于php - 使用 PHP 返回有用的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37553580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com