PHP何时使用try / catch?

时间:2015-10-11 15:28:59

标签: php

我只是在想什么。在index.php中,我目前正在做类似这样的事情

function performFtpOperation() {

    global $config;

    try {
        $ftp = new FTP\FtpClient();
        $ftp->connect($config::FTP_SERVER);
        $ftp->login($config::FTP_USER, $config::FTP_PASSWORD);

    } catch (Exception $e) {
        echo 'Error: ', $e->getMessage();
    }
}

我想知道的是,是否需要尝试catch块?我怀疑的原因是因为如果出现问题我的FTP类会抛出错误。例如,这是连接功能

public function connect($host, $ssl = false, $port = 21, $timeout = 90)
{
    if ($ssl) {
        $this->conn = @$this->ftp->ssl_connect($host, $port, $timeout);
    } else {
        $this->conn = @$this->ftp->connect($host, $port, $timeout);
    }
    if (!$this->conn) {
        throw new Exception('Unable to connect');
    }
    return $this;
}

如果在类中处理错误,那么是否需要try / catch?

由于

4 个答案:

答案 0 :(得分:5)

当抛出异常时,不会执行它后面的代码,PHP将尝试找到匹配的“catch”块。 如果未捕获异常,将发出致命错误,并显示“未捕获的异常”消息。

正确的异常代码应包括:

  • 尝试 - 使用异常的函数应该在“try”块中。如果异常未触发,则代码将继续正常进行。但是,如果异常触发,则会抛出异常
  • 投掷 - 这是触发异常的方法。每个“投掷”必须至少有一个“抓住”
  • Catch - “catch”块检索异常并创建包含异常信息的对象

  • 答案 1 :(得分:2)

    connect类抛出需要捕获并处理代码中某处的异常。根据您的应用设计和要求,由您来处理它。

    如果您决定要在performFtpOperation函数中处理它们,那么您对try...catch的使用是正确的。

    如果你不在performFtpOperation函数中处理它们,那么它们会冒泡到调用performFtpOperation函数的代码,你可以捕获&如果您喜欢使用try...catch,请在此处理它们。请记住,你需要在某个地方捕捉它们。

    答案 2 :(得分:1)

    好吧,因为你在FTP代码中抛出异常,然后是。

    答案 3 :(得分:1)

    如果您使用exeptions,则需要尝试catch,否则会产生致命错误,此时脚本/站点将停止工作,因此try / catch是exeption处理的一部分。

    你可以在php手册中了解这一点

    sorting