【问题标题】:How to catch [Symfony\Component\Debug\Exception\ContextErrorException]如何捕捉 [Symfony\Component\Debug\Exception\ContextErrorException]
【发布时间】:2015-11-09 13:48:47
【问题描述】:

我正在尝试使用 symfony 创建一个 php 命令以通过 ssh 连接到服务器。 没关系,但如果我无法连接到服务器(服务器无法访问),我会出现此错误:

[Symfony\Component\Debug\Exception\ContextErrorException]             
Warning: ssh2_connect(): Unable to connect to skin-master on port 22  

这没关系,但如果我尝试通过以下方式捕获错误:

try{
                $exec=$this->ssh_connect($cinema);
            }
            catch(\Exception $e){
                echo $e;
                $this->no_connection($em,$cinema);
                continue;

我仍然有错误,所以我无法控制这个异常。 我怎样才能做到这一点? 谢谢:)

【问题讨论】:

  • 为什么catch 部分中有continue
  • 因为在 for statemant 中。

标签: php symfony exception ssh


【解决方案1】:

只需显式捕获异常

try {

} catch (\Symfony\Component\Debug\Exception\ContextErrorException $e) {

}

如果你还需要捕获其他异常,你可以这样做

try {

} catch (\Symfony\Component\Debug\Exception\ContextErrorException $e) {

} catch (\Some\Other\Exception $e) {

} catch (\Exception $e) {

}

【讨论】:

  • 它不起作用,可能是因为 symfony 捕获的警告。是否可以控制此警告?
  • 怎么不行?使用此代码时会发生什么?
  • 如果我使用 try{} catch(\Exception $e){} 会发生同样的事情
  • Symfony 是否在根命名空间中?
  • 在根命名空间中?什么?
【解决方案2】:

检查连接。您可以使用:

http://php.net/manual/en/function.fsockopen.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2019-08-02
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2018-08-18
    • 2014-11-11
    相关资源
    最近更新 更多