hanaalkadri / educom-webshop-database

0 stars 0 forks source link

De error afhandeling in een data laag kan je beter met Excepties doen dan met `die` of `echo 'Error...` #19

Open JeroenHeemskerk opened 1 year ago

JeroenHeemskerk commented 1 year ago

Als er iets misgaat in de datalaag dan is het niet netjes om de hele presentatie van de pagina te stoppen met die https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L12 https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L132

of dat je een echo doet van een Error https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L40 https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L58 https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L79 https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L138

In deze situaties is het beter om een Exceptie te gooien waardoor de code erachter niet wordt uitgevoerd. Handig is om dan zoveel mogelijk informatie zoals de gerapporteerde error en de SQL string ook in de Exceptie mee te geven.

    if (!$conn) {
        throw new Exception("Database connection failed: " .  mysqli_connect_error());
   }
   if (!$result) {
        throw new Exception("Read user failed, SQL: " . $sql  . ", Error: " .  mysqli_error($conn));
   }
   if (!mysqli_query($conn, $sql) {
        throw new Exception("Delete user failed, SQL: " . $sql  . ", Error: " .  mysqli_error($conn));
   }
JeroenHeemskerk commented 1 year ago

Het is ook niet de bedoeling dat er ergens in de repository een echo staat (want echo's zijn voor de presentatie laag) https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L38 https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L56 https://github.com/hanaalkadri/educom-webshop-database/blob/d7870aeef86bef03195aad4b0be9ff9e88bbd474/database_repository.php#L136