我可以在一大块HTML周围使用PHP try/catch吗?

我可以在一大块HTML周围使用PHP try/catch吗?,php,exception,try-catch,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; ?>"

我想在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; ?>

图像_name;?>" />
图像_name;?>“/>

谢谢

也许我没有抓住要点,但是为什么不在做foreach之前测试$grid呢

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

.... foreach。。。。

如果我答对了,您正在寻找
@
错误抑制操作符。如果您将一个空数组传递给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; ?>

图像_name;?>" />
图像_name;?>“/>
也可以对html内容使用try-catch块,但它显然只会捕获


请注意,在
foreach
块中使用该数组之前,检查该数组是否为空会更干净。

foreach
如果该数组为空,则不会产生错误

<?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; ?>

因此,
$grid
不是对象,或者
result()
返回非数组,如
false
null
。如果是前者,则使用后者的
If($grid)
包围
foreach
,然后使用
If(!empty($grid->result())

使用codeigniter框架进行Im。网格将始终是一个数组,但它可能不会被填充。