Ir para conteúdo
Fórum Script Brasil
  • 0

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


Frank K Hosaka

Pergunta

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

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...