Introdução a manipulação de erros em PHP
Abordaremos os pontos básicos na manipulação de erros em PHP. Humanos erram, um computador obviamente não é humano e por isso erros devem ser evitados ao extremo. E quando eles acontecerem seu sistema deve estar preparado para detectá-los e agir da melhor forma. A manipulação de erros dependerá mais do programador do que de qualquer outra coisa.
Parte 4: Estendendo e especificando exceções
Podemos tornar nossas exceções mais específicas e por consequência saber com mais precisão que tipo de erro ocorreu, manipulando-o assim da melhor maneira possível.
Usamos a palavra-chave extends para estender uma classe, ou seja, criar uma classe derivada (ou classe filha). Quando uma classe estende outra, ela herda da última atributos e métodos dependendo do nível de acesso de cada elemento que constitui o corpo da classe. A classe filha pode sobrecarregar métodos (redefiní-los).
Exception é uma classe que pode ser herdada, sendo assim podemos definir classes que derivem e aumentem sua funcionalidade, passando de uma simples exceção genérica para exceções mais precisas.
Usamos a palavra-chave extends para estender uma classe, ou seja, criar uma classe derivada (ou classe filha). Quando uma classe estende outra, ela herda da última atributos e métodos dependendo do nível de acesso de cada elemento que constitui o corpo da classe. A classe filha pode sobrecarregar métodos (redefiní-los).
Exception é uma classe que pode ser herdada, sendo assim podemos definir classes que derivem e aumentem sua funcionalidade, passando de uma simples exceção genérica para exceções mais precisas.
Exceções derivadas
Definamos algumas classes derivadas de Exception:
class DBException extends Exception {
protected $variavel; //Uma variavel qualquer
public function __construct($exceptionMessage, $errorCode = 0) {
parent::__construct($exceptionMessage, $errorCode);
}
//Aqui vemos alguns métodos característicos da classe derivada de Exception
public function getVariavel() {
return $this->variavel_qualquer;
}
public function setVariavel($valor = NULL) {
$this->variavel = $valor;
}
}
class FopenException extends Exception {
protected $arquivo; //Variável contendo o nome de um arquivo
public function __construct($nomeDoArquivo, $exceptionMessage, $errorCode = 0) {
parent::__construct($exceptionMessage, $errorCode);
$this->arquivo = $nomeDoArquivo;
}
//Métodos característicos dessa classe
public function getNomeDoArquivo() {
return $this->arquivo;
}
public function exibirNomeDoArquivo() {
echo "Nome do arquivo: {$this->arquivo}";
}
}
protected $variavel; //Uma variavel qualquer
public function __construct($exceptionMessage, $errorCode = 0) {
parent::__construct($exceptionMessage, $errorCode);
}
//Aqui vemos alguns métodos característicos da classe derivada de Exception
public function getVariavel() {
return $this->variavel_qualquer;
}
public function setVariavel($valor = NULL) {
$this->variavel = $valor;
}
}
class FopenException extends Exception {
protected $arquivo; //Variável contendo o nome de um arquivo
public function __construct($nomeDoArquivo, $exceptionMessage, $errorCode = 0) {
parent::__construct($exceptionMessage, $errorCode);
$this->arquivo = $nomeDoArquivo;
}
//Métodos característicos dessa classe
public function getNomeDoArquivo() {
return $this->arquivo;
}
public function exibirNomeDoArquivo() {
echo "Nome do arquivo: {$this->arquivo}";
}
}
Já vou fazer uns testes!
Parabéns!