Php 我如何识别它';是一个错误代码还是一个int?
我了解到我可以这样定义我的错误代码:Php 我如何识别它';是一个错误代码还是一个int?,php,Php,我了解到我可以这样定义我的错误代码: class Hello { /** My own error codes */ const OK = 0; const ERROR = 1; const OTHER = 2; function Test() { /** Return the error code if an error was occurred */ if(an_error_occurred)
class Hello
{
/** My own error codes */
const OK = 0;
const ERROR = 1;
const OTHER = 2;
function Test()
{
/** Return the error code if an error was occurred */
if(an_error_occurred)
return self::ERROR;
/** Simulate some simple result. */
return rand(0, 10);
}
}
但我在这方面遇到了一些麻烦:
if($Hello->Test() == Hello::ERROR)
exit('Something happened.');
即使没有发生错误,它仍然会退出,但是$Hello->Test()给出的值等于1
我如何解决这个问题
或者有更好的方法来定义我自己的错误代码?您不应该混淆返回值的含义。正如其他人所提到的,例外情况基本上都是这样
class Hello
{
function Test()
{
/** Return the error code if an error was occurred */
if (an_error_occurred)
throw new Exception("An error occurred.");
/** Simulate some simple result. */
return rand(0, 10);
}
}
打电话时,你会这样做:
try {
$foo = $hello->Test();
}
catch(Exception $e) {
echo "There was a problem: " . $e->getMessage();
}
只有在测试方法中抛出异常时,才会执行catch块中的代码。您可以创建自己的异常类型,以便针对不同类型的错误对此进行进一步自定义
检查它:您不应该混合返回值的含义。正如其他人所提到的,例外情况基本上都是这样
class Hello
{
function Test()
{
/** Return the error code if an error was occurred */
if (an_error_occurred)
throw new Exception("An error occurred.");
/** Simulate some simple result. */
return rand(0, 10);
}
}
打电话时,你会这样做:
try {
$foo = $hello->Test();
}
catch(Exception $e) {
echo "There was a problem: " . $e->getMessage();
}
只有在测试方法中抛出异常时,才会执行catch块中的代码。您可以创建自己的异常类型,以便针对不同类型的错误对此进行进一步自定义
检查它:或
false
并检查==
您必须确保类常量和返回值集不相交。或者false
并检查==
您必须确保类常量和返回值集不相交。但我将使用$Hello->Test()
在许多不同的地方,如果我不想每次使用try-catch块时都使用它,该怎么办?无论何时使用它,都应该使用try-catch。否则,您将执行和if块来测试错误,这样在try-catch中几乎没有额外的工作,而且安全性更高。例如,您也可以选择忽略错误并在堆栈的更高层捕捉它。当然,如果您正在创建自己的异常类,那么最好创建自己的异常类。如果您不在抛出异常的方法中处理异常,PHP本身将抛出一个错误。因此,你需要以某种方式尝试/抓住。在一个特定的实例中,如果您不关心是否抛出异常——这是不寻常的,因为错误条件往往非常重要——那么您可以提供一个空的catch块,它什么也不做。然而,人们普遍不赞成这样做。业余程序员经常会在代码中乱扔不适当的空catch块,造成各种看不见的问题。但我会在许多不同的地方使用$Hello->Test()
,如果我不想每次使用try-catch块时都放上它怎么办?你应该在每次使用它时都使用try-catch。否则,您将执行和if块来测试错误,这样在try-catch中几乎没有额外的工作,而且安全性更高。例如,您也可以选择忽略错误并在堆栈的更高层捕捉它。当然,如果您正在创建自己的异常类,那么最好创建自己的异常类。如果您不在抛出异常的方法中处理异常,PHP本身将抛出一个错误。因此,你需要以某种方式尝试/抓住。在一个特定的实例中,如果您不关心是否抛出异常——这是不寻常的,因为错误条件往往非常重要——那么您可以提供一个空的catch块,它什么也不做。然而,人们普遍不赞成这样做。业余程序员通常会在代码中乱扔不适当的空catch块,导致各种看不见的问题。