Jump to content
Fórum Script Brasil
  • 0

Não sei como usar try catch (Exception $e)


Frank K Hosaka

Question

Ontem, eu recebi uma mensagem de erro nesse código:

<?php
$pedidos=[["id"=>1,"total"=>2.00,"data"=>"2023-07-27"],
        ["id"=>2,"total"=>10.00,"data"=>null],
        ["id"=>3,"total"=>5.00,"data"=>"2023-07-27"]];
echo "relatório de orçamentos <br><table><th>Pedido<th>Total<th>Data";
foreach($pedidos as $pedido){
    echo "<tr><td>".$pedido['id']."<td>".$pedido['total'].
        "<td>".date('d/m/y',strtotime($pedido['data']));}
// Deprecated: strtotime(): Passing null to parameter #1 ($datetime) 
// of type string is deprecated in C:\wamp64\www\astudy\index.php on line 8

Não descobri como apareceu o valor null na variável data. Para contornar o problema, eu tentei usar

try {$dia=date('d/m/y',strtotime($pedido['data']));}
catch (Exception $e){$dia="problema";}

Não deu certo, a tela ficou com outras mensagens de erro. Assim, eu fiz outra gambiarra:
 

<?php
$pedidos=[["id"=>1,"total"=>2.00,"data"=>"2023-07-27"],
        ["id"=>2,"total"=>10.00,"data"=>null],
        ["id"=>3,"total"=>5.00,"data"=>"2023-07-27"]];
echo "relatório de orçamentos <br><table><th>Pedido<th>Total<th>Data";
foreach($pedidos as $pedido){
    if($pedido['data']!==null){
        $dia=date('d/m/y',strtotime($pedido['data']));} else {
        $dia="problema";}
    echo "<tr><td>".$pedido['id']."<td>".$pedido['total'].
        "<td>$dia";}

e o relatório vai aparecer no final dessa mensagem. Ou seja, eu cai na segunda lei de Murphy, onde "a pressa é a inimiga da programação".

 

 

Captura de tela 2023-07-27 111104.png

Edited by Frank K Hosaka
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 1

Opa beleza,

Olhando aqui esse Post você já resolveu a mensagem de erro fazendo a checagem do valor null dentro da data... o que teria de checar mesmo é a integridade dos dados na hora em que o pedido é feito para evitar que a data viesse como null

fazendo isso aqui (colocar o @)

foreach($pedidos as $pedido){
    echo "<tr><td>".$pedido['id']."<td>".$pedido['total'].
        "<td>".date('d/m/y',@strtotime($pedido['data']));}

 será que também não daria certo? acho que ele ignoraria o erro... é claro que é outra 'SOLUÇÂO' das boas KKKK

 

 

Link to comment
Share on other sites

  • 0
Em 20/08/2023 em 17:45, Jonny B disse:

Opa beleza,

Olhando aqui esse Post você já resolveu a mensagem de erro fazendo a checagem do valor null dentro da data... o que teria de checar mesmo é a integridade dos dados na hora em que o pedido é feito para evitar que a data viesse como null

fazendo isso aqui (colocar o @)

foreach($pedidos as $pedido){
    echo "<tr><td>".$pedido['id']."<td>".$pedido['total'].
        "<td>".date('d/m/y',@strtotime($pedido['data']));}

 será que também não daria certo? acho que ele ignoraria o erro... é claro que é outra 'SOLUÇÂO' das boas KKKK

 

 

 

Boa gambiarra. Esqueci do @.

Link to comment
Share on other sites

  • 0

Depende da necessidade, mas o mais indicado seria usar o ??

Esse operador verifica se o valor antes dele é nulo. Se não for, usa ele, se for, usa o que esta depois. Por exemplo:

$a = 1;
$b = 'test';
$c = null;
$d = '';

echo $a ?? 'fallback $a'; // ira mostrar: 1
echo $b ?? 'fallback $b'; // ira mostrar: test
echo $c ?? 'fallback $c'; // ira mostrar: fallback $c 
echo $d ?? 'fallback $d'; // ira mostrar:  (em branco)

é mais ou menos como o if que voce fez, mas mais elegante, e fazendo a checagem na hora da exibicao,

echo "<tr><td>".$pedido['id']."<td>".$pedido['total']."<td>". ($dia ?? 'problema');

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.8k
×
×
  • Create New...