Php try-catch可以用这种方式处理异常吗?
Php try-catch可以用这种方式处理异常吗?,php,laravel,exception,exception-handling,try-catch,Php,Laravel,Exception,Exception Handling,Try Catch,Try-catch用于处理异常,但也可以这样使用吗 private $blockUrl = []; public function doSomething($urls) { try { foreach ($urls as $key => $url) { if (in_array($url, $this->blockUrl)) continue; $meta[$url] = get_meta_tags($u
Try-catch
用于处理异常,但也可以这样使用吗
private $blockUrl = [];
public function doSomething($urls) {
try {
foreach ($urls as $key => $url) {
if (in_array($url, $this->blockUrl)) continue;
$meta[$url] = get_meta_tags($url);
unset($urls[$key]);
}
} catch (Exception $e) {
$this->blockUrl[] = $url;
return $this->doSomething($urls);
}
return $meta;
}
因此,基本上,它的作用是获取传递给该方法的URL的元标记。然后,如果get\u meta\u标记上发生异常,将抛出异常,并将导致异常的url放入数组$this->blockUrl
。然后,它将再次调用相同的方法,但这次只会再次验证剩余的URL
这是一种正确而有效的方法吗
我在这里使用了try-catch
,因为有时候我会在get\u-meta\u标签上出现curl
错误,我只想跳过那些有这些错误的URL并继续流。将try/catch
放在循环中:
public function doSomething($urls) {
$meta = [];
foreach ($urls as $url) {
try {
$meta[$url] = get_meta_tags($url);
} catch (Exception $e) {
//
}
}
return $meta;
}
不要忘记初始化$meta
数组,否则在尝试返回未定义的变量时可能会出错。将try/catch
放入循环中:
public function doSomething($urls) {
$meta = [];
foreach ($urls as $url) {
try {
$meta[$url] = get_meta_tags($url);
} catch (Exception $e) {
//
}
}
return $meta;
}
不要忘记初始化$meta
数组,否则当您尝试返回未定义的变量时,可能会出现错误。正如我在评论中所建议的,您可以在循环内执行错误检查,只需跳过任何不好的变量即可。这允许您摆脱$blockUrl
数组,除非您在其他地方需要它
public function doSomething($urls) {
$meta = array();
foreach ($urls as $key => $url) {
try {
$result = get_meta_tags($url);
$meta[$url] = $result;
} catch (Exception $e) {
continue;
}
}
return $meta;
}
正如我在评论中所建议的,您可以在循环中进行错误检查,只需跳过任何不好的错误。这允许您摆脱$blockUrl
数组,除非您在其他地方需要它
public function doSomething($urls) {
$meta = array();
foreach ($urls as $key => $url) {
try {
$result = get_meta_tags($url);
$meta[$url] = $result;
} catch (Exception $e) {
continue;
}
}
return $meta;
}
curl是否真的抛出异常。。。?!或者只是显示一个错误/通知?后者不能被捕获
@deceze-在PHP7中,您可以将其捕获为Throwable
。是的,它是有效的,我想知道这是一个好的做法还是有更好的方法来处理这个问题。将您的try/catch放在foreach循环中,然后将continue放在catch中如何?curl是否真的抛出异常。。。?!或者只是显示一个错误/通知?后者不能被捕获
@deceze-在PHP7中,您可以将其捕获为可丢弃的
。是的,它可以工作,我想知道这是一个好的做法还是有更好的方法来处理这个问题。将您的try/catch放在foreach循环中,然后将continue放在catch中如何?