2015-04-22, 23:26
  #1
Medlem
Även om man inte måste har jag läst att man förutom databasuppkopplingen bör sätta även varje query i en try/catch. Dock visas det olika hur folk sätter den. Vissar har det bara runt execute och andra all kod. Vissa resonerar att första raden är bara en sträng i en variabel och inget som behöver try/catch.
  1. Runt vad ska man sätt try/catch i sin kod? Se Exemel 1
  2. Är det nödvändigt att skriva egen exception för varje query? Se Exempel 2

Exempel 1
Så här
Kod:
$sql = "SELECT test....";
try {       
 $query = $this->db->prepare($sql);
        $parameters = array(':test' => $test);
        $query->execute($parameters);
} catch (Exception $ex) {
            echo $ex->getMessage();
        }

Eller såhär, eller något annat?

Kod:
try {
$sql = "SELECT test....";
       
 $query = $this->db->prepare($sql);
        $parameters = array(':test' => $test);
        $query->execute($parameters);
} catch (Exception $ex) {
            echo $ex->getMessage();
        }

Exempel 2
Räcker detta för varje query?

Kod:
catch (Exception $ex) {
            echo $ex->getMessage();
        }

Eller bör man skriva sträng anpassat för varje exception, eller en generell för alla, typ något gick fel?
Kod:
catch (Exception $ex) {
            echo 'My own comment what may have gone wrong: ' . $ex->getMessage();
        }
Citera
2015-04-23, 10:05
  #2
Medlem
Det går inte att svara exakt på. Du bör hantera varje fel på det sätt som lämpar sig bäst för din applikation.

En användaren kommer antagligen inte bli så glad för det meddelande som finns i exception:et i alla fall. Du bör väl snarare logga exceptions så du får en chans att felsöka din applikation och rätta till det som orsakar exceptions.

Tänk på att du kan ha flera catch-block för olika typer av exceptions också, så du kan förfina redan där:
Kod:
try { 
...
} catch (
PDOException $ex)  {
   echo 
"Något problem med databasen. Försök igen senare.";
} catch (
Exception $ex) {
   echo 
"Oups, något gick fel. Det har loggats och ansvariga underättats.";

Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in