我是一个关于抛出Exceptions的新手,我在使用这个PHP基本方法时没有得到如何抛出异常,DateTime :: createFromFormat()
案例如下:
private function obtainMostRecentFile($fileNamesArray, $start, $lenght) {
foreach ($fileNamesArray as $row) {
$i++;
$format = 'Ymd';
$date = DateTime::createFromFormat($format, substr($row, $start, $lenght));
$date_in_format[$i] = $date->format('Ymd');
}
return (max($date_in_format));
}
Run Code Online (Sandbox Code Playgroud)
我有这个方法,我需要找到一种方法,当DateTime::createFromFormat($format, substr($row, $start, $lenght));没有正确运行时抛出异常.
例如:
如果我调用$this->obtainMostRecentFile("GeoLiteCity_20101201.zip", 12, 8);该函数返回它们应该返回的输出.
如果我调用$this->obtainMostRecentFile("GeoLiteCity_201.zip", 12, 8);该函数返回输出Fatal error: Call to a member function format() on a non-object in C:\xampp\htdocs\testes\testecsv4.php on line 440.
Normaly我做这样的事情:
if (is_null($someVariable)) {
throw new Exception("null variable");
}
Run Code Online (Sandbox Code Playgroud)
你能给我一些关于如何抛出Exception的线索DateTime::createFromFormat()吗?
最好的祝福,
当DateTime::createFromFormat使用无效值调用时,它会重新启动false.false没有方法format,所以这是你的应用程序崩溃的地方:
$date_in_format[$i] = $date->format('Ymd');
Run Code Online (Sandbox Code Playgroud)
你应该在那之前加上一张支票:
$format = 'Ymd';
$date = DateTime::createFromFormat($format, substr($row, $start, $lenght));
if($date === false) {
// throw an exception here!
}
$date_in_format[$i] = $date->format('Ymd');
Run Code Online (Sandbox Code Playgroud)