【问题标题】:How can I make errors that I may encounter in php curl with try / catch?如何使用 try/catch 使我在 php curl 中遇到的错误?
【发布时间】:2021-01-25 10:26:50
【问题描述】:

我想用try/catch规避php curl中可能遇到的错误,但是cath部分不起作用,问题出在哪里??

<?php
    try {
        $username = $_POST['username'];
        $pass = $_POST['pass'];
        $ch = curl_init();
        
        curl_setopt($ch, CURLOPT_URL,"https://example.com/api?username=".$username."&password=".$pass);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
        $server_output = curl_exec ($ch);
        
        $json = json_decode($server_output, true);
        
        $token = $json["session"]["sessionId"];
        echo $token;
        curl_close ($ch);
        
        
    }
    
    catch(Exception $e){
        echo "Error";
    }
    
    ?>

【问题讨论】:

  • cURL 本身不会抛出异常。
  • 这能回答你的问题吗? How to catch curl errors in PHP
  • @CBroe 那么我该如何克服任何可能的错误呢?
  • 此代码不会产生异常,因此您需要根据您的错误处理来管理创建自定义异常。请参阅下面的更新代码
  • @MominIqbal 否,如果登录信息不正确,则无法接收令牌,因此报错。

标签: php curl request try-catch


【解决方案1】:

在下面找到更新的 sn-p 以在令牌为空时抛出异常...

   <?php
    try {
        $username = $_POST['username'];
        $pass = $_POST['pass'];
        $ch = curl_init();
        
        curl_setopt($ch, CURLOPT_URL,"https://example.com/api?username=".$username."&password=".$pass);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
        $server_output = curl_exec ($ch);
        
        $json = json_decode($server_output, true);
        
        $token = $json["session"]["sessionId"];

        if(empty($token)){
            throw new Exception('Token not found');
        }
        echo $token;
        curl_close ($ch);
        
        
    }
    
    catch(Exception $e){
        echo "Error";
    }
    
    ?>

我添加了以下行以确保您的代码在没有令牌时捕获异常...

if(empty($token)){
   throw new Exception('Token not found');
}

【讨论】:

  • 在这段代码之后我使用了不同的 curl,如果那部分有错误,我该如何捕捉它?
  • 如果您的 curl 响应会引发 FATAL 错误,那么您无需执行任何操作。但是,如果您的 curl 请求成功,但无法获得任何响应(响应为空或您想要应用的任何其他逻辑),那么您需要像在空令牌情况下一样手动管理
  • 我试了你扔的代码,因为没有token值,那个$token行出现错误。
  • $token 变量的值/错误是什么?
  • 注意:尝试访问 C:\xampp\htdocs\Login_v15\sonuc.php 中第 14 行中 null 类型值的数组偏移量 注意:尝试访问 C 中 null 类型值的数组偏移量:\xampp\htdocs\Login_v15\sonuc.php 第 14 行错误
猜你喜欢
  • 1970-01-01
  • 2019-06-16
  • 2016-05-04
  • 2015-10-03
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
相关资源
最近更新 更多