返回false而不是抛出异常

时间:2016-05-01 22:08:48

标签: php

我有这个功能:

public static function get($action, $param = null) {
    $options = array(
        'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => "GET"
        )
    );
    $context  = stream_context_create($options);

    $params = '';
    foreach($param as $key => $value)
        $params .= $key . '=' . $value . '&';
    trim($params, '&');

    $result = file_get_contents(self::$url . $action . '?' . $params, false, $context);

    return json_decode($result, true);
}

问题是:当我向file_get_contents提供错误的网址时,它会抛出错误(异常)。 但是,我希望返回false而不会抛出错误。 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您应该使用try {} catch {}来捕获异常,并在这种情况下执行某些操作。

try {
   $result = file_get_contents(self::$url . $action . '?' . $params, false, $context);
} catch (\Exception $e) {
 return false;
}

答案 1 :(得分:0)

您可以使用try-catch块围绕它:


public static function get($action, $param = null) {
    $options = array(
        'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => "GET"
        )
    );
    $context  = stream_context_create($options);

    $params = '';
    foreach($param as $key => $value)
        $params .= $key . '=' . $value . '&';
    trim($params, '&');

    try {
        $result = file_get_contents(self::$url . $action . '?' . $params, false, $context);
        return json_decode($result, true);
    } catch(Exception $exc) {
        return false;
    }
}

try使PHP异常感知可以说:如果try块中的抛出异常,PHP将执行catch块并在这里$exc将包含有关抛出异常的详细信息。