我可以在大块HTML上使用PHP try / catch吗?

时间:2010-11-05 23:23:58

标签: php exception try-catch

我想在try / catch中包围整个代码块,因为当网格数组中没有任何内容时它会导致错误。这是最好的方法吗?

 <?php foreach ($grid->result() as $idx => $row): ?>  <?php if ($idx % 3 == 2): ?>
   <div class="img_grid_3"><img src="/images/thumb/<?= $row->images_name; ?>" /></div>
    <?php else: ?>
   <div class="img_grid"><img src="/images/thumb/<?= $row->images_name; ?>" /></div>
   <?php endif; ?>
<?php endforeach; ?>

由于

3 个答案:

答案 0 :(得分:1)

也许我错过了这一点,但为什么不在做foreach之前测试$ grid?

<?php if($grid): ?>
  .... foreach ....
<?php endif; ?>

答案 1 :(得分:0)

如果我找到了你,你正在寻找@错误抑制算子。如果你将一个空数组传递给foreach,你会得到一个PHP警告,你不能用try/catch块来捕获它。

<?php @foreach ($grid->result() as $idx => $row): ?>
   <?php if ($idx % 3 == 2): ?>
   <div class="img_grid_3"><img src="/images/thumb/<?= $row->images_name; ?>" /></div>
   <?php else: ?>
   <div class="img_grid"><img src="/images/thumb/<?= $row->images_name; ?>" /></div>
   <?php endif; ?>
<?php endforeach; ?>

也可以使用带有html内容的try catch块,但显然只能捕获Exceptions

请注意,在foreach块中使用数组之前检查数组是否为空是更清晰的。

答案 2 :(得分:0)

如果数组为空,

foreach将不会产生错误。

因此,$grid不是对象,或者result()返回的是非falsenull等数组。如果前者围绕后者的foreach if ($grid),则使用if (!empty($grid->result()))