Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Php gestione errori (warning)

    Ho questo codice dentro un ciclo che visualizza dei dati:
    Codice PHP:
    echo "<br>caso2 ".$iptot": ".$ret
    in alcuni casi mi restituisce un warning. Vorrei che in caso di warning apparisse una cosa diversa e ho provato in questo modo:

    Codice PHP:
     try {
        echo 
    "<br>caso2 ".$iptot": ".$ret;
    } catch (
    Exception $e) {
        echo 
    '<br>Non risponde: '.$iptot;

    Ma il warning appare lo stesso e non va nel catch.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    I blocchi try catch si usano per gestire le eccezioni, i warning sono una cosa diversa.

    Nel tuo caso probabilmente ti da un warning perché almeno una delle due variabili è vuota (vado ad intuito).
    In quel caso potresti controllarle con la funzione isset() prima di stamparle, in modo da non avere il warning.
    Usando un if tipo if(isset(a) && isset(b)) potresti anche avere un output diverso in caso una delle due variabili fosse vuota.

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie! Intuizione corretta! Infatti quel problema l'ho risolto così:
    Codice PHP:
    if(!isset($ret) || empty($ret)){
        echo 
    '<br>Non risponde: '.$iptot;
    } else {
        echo 
    "<br>Risponde ".$iptot": ".$ret;

    Il problema ora ce l'ho nell'indicizzazione della variabile che è così:
    Codice PHP:
    $ret snmpget($iptot'public''sysDescr.0'); 
    Essendo dentro un ciclo for ogni volta che non raggiunge l'apparato e non si indicizza ho questo warning che vorrei nascondere.
    Warning: snmpget(): No response from 192.168.0.101

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Potresti aggiungere @ al nome della funzione per bloccare il warning e poi fare un check sul return per vedere se il valore è corretto.

    Codice PHP:
    $ret = @snmpget($iptot'public''sysDescr.0'); 

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    dal manuale, snmpget() restituisce false in caso di errore
    testa il caso in cui sia false e mostra l'errore, altrimenti continua

  6. #6
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Già provato ma non va! O meglio l'IF funziona ma il warning compare ancora
    Codice PHP:
    if (snmpget($iptot'public''sysDescr.0') == FALSE)
            { 
            echo 
    '<br>Non risponde: '.$iptot;
            } else 
            {
            echo 
    "<br>Risponde ".$iptot": ".$ret;
            } 
    Warning: snmpget(): No response from 192.168.0.100

    ---

    Mi era sfuggito il messaggio di MV ho risolto mettendo la @ e con:
    Codice PHP:
     if(!isset($ret) || empty($ret)){
        echo 
    '<br>Non risponde: '.$iptot;
    } else {
        echo 
    "<br>Risponde ".$iptot": ".$ret;

    Grazie!
    Ultima modifica di Sonikag; 28-07-2017 a 13:03

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.