【问题标题】:logging exception in try-catch statement在 try-catch 语句中记录异常
【发布时间】:2014-09-09 15:46:34
【问题描述】:

所以我有这样的代码:

    for($x=1;$x<=3;$x++)
    {   
        try
        {
            $c = new client($user_id, $ident);
            log("Client initialized successfully...");
            break;
        }
        catch (Exception $e)
        {
            log("Error in attempt($x)to init client");
        }
    }

我的问题是,有没有可能在log("Client initialized successfully..."); 行之后抛出异常?因为如果是,那么这将意味着日志将同时包含初始化过程的成功和错误消息。从技术上讲,只有在初始化新客户端对象时才会出现异常,但我不确定......

【问题讨论】:

  • 我想你想要的是error_log(),而不是log()
  • @GergoErdosi:你是对的!谢谢!

标签: php exception logging try-catch


【解决方案1】:

嗯,是的,如果函数日志抛出异常,它可以,如果我是你,我会重命名函数名称,因为已经有一个函数日志:

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

【讨论】:

    【解决方案2】:

    这里只能分行抛出异常:

    $c = new client($user_id, $ident);
    

    log("Client initialized successfully...");
    

    (我们不知道日志功能是做什么的)。

    这很奇怪,你尝试循环初始化对象 3 次 - 你认为这里会有很多错误吗?

    【讨论】:

      【解决方案3】:

      只有在日志函数抛出异常时才有可能。

      或者,您可以将$success 变量初始化为true。在catch 中将其设置为false。然后在整个 try/catch 块之后检查它。

      【讨论】:

        猜你喜欢
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-23
        • 2016-11-27
        • 1970-01-01
        • 2019-03-02
        相关资源
        最近更新 更多