我只是在想什么。在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?
由于
答案 0 :(得分:5)
当抛出异常时,不会执行它后面的代码,PHP将尝试找到匹配的“catch”块。 如果未捕获异常,将发出致命错误,并显示“未捕获的异常”消息。
正确的异常代码应包括:
答案 1 :(得分:2)
connect
类抛出需要捕获并处理代码中某处的异常。根据您的应用设计和要求,由您来处理它。
如果您决定要在performFtpOperation
函数中处理它们,那么您对try...catch
的使用是正确的。
如果你不在performFtpOperation
函数中处理它们,那么它们会冒泡到调用performFtpOperation
函数的代码,你可以捕获&如果您喜欢使用try...catch
,请在此处理它们。请记住,你需要在某个地方捕捉它们。
答案 2 :(得分:1)
好吧,因为你在FTP代码中抛出异常,然后是。
答案 3 :(得分:1)
如果您使用exeptions,则需要尝试catch,否则会产生致命错误,此时脚本/站点将停止工作,因此try / catch是exeption处理的一部分。
你可以在php手册中了解这一点