La gestió d'errors i excepcions és una part fonamental del desenvolupament de programari, ja que permet als desenvolupadors manejar situacions inesperades de manera controlada i segura. En aquest tema, aprendrem com PHP maneja els errors i les excepcions, i com podem utilitzar aquestes eines per millorar la robustesa i la seguretat del nostre codi.

Continguts

Tipus d'Errors en PHP

PHP categoritza els errors en diverses classes. Els més comuns són:

  • Errors de Sintaxi (Parse Errors): Aquests errors es produeixen quan el codi PHP no està escrit correctament.
  • Errors Fatals (Fatal Errors): Aquests errors es produeixen quan PHP troba un problema que impedeix l'execució del codi.
  • Errors d'Avís (Warning Errors): Aquests errors indiquen problemes no fatals. El codi continua executant-se.
  • Errors de Notificació (Notice Errors): Aquests errors indiquen problemes menors, com l'ús de variables no definides.

Gestió Bàsica d'Errors

PHP proporciona diverses funcions per gestionar errors. Les més comunes són error_reporting(), set_error_handler(), i trigger_error().

Exemple de error_reporting()

<?php
// Mostrar tots els errors
error_reporting(E_ALL);

// No mostrar cap error
error_reporting(0);
?>

Exemple de set_error_handler()

<?php
function customError($errno, $errstr) {
  echo "Error: [$errno] $errstr";
}

// Establir el gestor d'errors personalitzat
set_error_handler("customError");

// Provocar un error
echo($test);
?>

Exemple de trigger_error()

<?php
// Provocar un error personalitzat
if ($test > 1) {
  trigger_error("El valor de test és massa alt", E_USER_WARNING);
}
?>

Excepcions en PHP

Les excepcions són una manera més avançada de gestionar errors. Permeten separar la lògica de l'error de la lògica principal del programa.

Exemple bàsic d'Excepcions

<?php
function divide($dividend, $divisor) {
  if ($divisor == 0) {
    throw new Exception("Divisió per zero.");
  }
  return $dividend / $divisor;
}

try {
  echo divide(10, 0);
} catch (Exception $e) {
  echo "Error: " . $e->getMessage();
}
?>

Creació d'Excepcions Personalitzades

Podem crear les nostres pròpies classes d'excepcions per gestionar errors específics de la nostra aplicació.

Exemple d'Excepció Personalitzada

<?php
class CustomException extends Exception {
  public function errorMessage() {
    // Error message personalitzat
    return "Error personalitzat: " . $this->getMessage();
  }
}

try {
  throw new CustomException("Això és un error personalitzat.");
} catch (CustomException $e) {
  echo $e->errorMessage();
}
?>

Pràctiques Recomanades

  • Utilitza Excepcions per a Errors Crítics: Les excepcions són ideals per a errors que no es poden recuperar fàcilment.
  • Registra Errors: Utilitza error_log() per registrar errors en un fitxer o sistema de registre.
  • No Mostris Errors en Producció: Configura el teu entorn de producció per no mostrar errors als usuaris finals.

Exercicis Pràctics

Exercici 1: Gestió Bàsica d'Errors

Crea un script PHP que provoqui un error d'avís i utilitza set_error_handler() per gestionar-lo.

Exercici 2: Excepcions

Escriu una funció que llegeixi un fitxer. Si el fitxer no existeix, llença una excepció. Gestiona l'excepció amb un bloc try-catch.

Solucions

Solució Exercici 1

<?php
function customError($errno, $errstr) {
  echo "Error: [$errno] $errstr";
}

set_error_handler("customError");

echo($test);
?>

Solució Exercici 2

<?php
function readFileContent($filename) {
  if (!file_exists($filename)) {
    throw new Exception("El fitxer no existeix.");
  }
  return file_get_contents($filename);
}

try {
  echo readFileContent("noexistentfile.txt");
} catch (Exception $e) {
  echo "Error: " . $e->getMessage();
}
?>

Conclusió

La gestió d'errors i excepcions és essencial per crear aplicacions PHP robustes i segures. Hem après a utilitzar les eines bàsiques de PHP per gestionar errors i excepcions, així com a crear excepcions personalitzades. Practica aquests conceptes amb els exercicis proporcionats per consolidar el teu coneixement.

Curs de Programació PHP

Mòdul 1: Introducció a PHP

Mòdul 2: Estructures de Control

Mòdul 3: Funcions

Mòdul 4: Arrays

Mòdul 5: Treballant amb Formularis

Mòdul 6: Treballant amb Fitxers

Mòdul 7: Programació Orientada a Objectes (OOP)

Mòdul 8: Treballant amb Bases de Dades

Mòdul 9: Tècniques Avançades de PHP

Mòdul 10: Frameworks PHP i Millors Pràctiques

Mòdul 11: Projecte: Construint una Aplicació Web

© Copyright 2024. Tots els drets reservats