簡體   English   中英

我可以在大量HTML上使用PHP try / catch嗎?

[英]Can I use PHP try/catch around a large block of HTML?

我想將整個代碼塊放在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; ?>

謝謝

也許我錯過了重點,但是為什么在進行foreach之前不測試$ grid?

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

如果我說對了,那么您正在尋找@錯誤抑制運算符。 如果將空數組傳遞給foreach,則會收到PHP警告,您無法使用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; ?>

也可以對HTML內容使用try catch塊,但是顯然只能捕獲Exceptions

請注意,在foreach塊中使用數組之前,檢查數組是否為空是比較干凈的。

如果數組為空,則foreach不會產生錯誤。

因此,要么$grid不是對象,要么result()返回一個非數組,如falsenull 如果是前者,則用后者的if ($grid)包圍foreach ,而不是使用if (!empty($grid->result()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM