Veremos a partir de então o básico quando o assunto é manipulação de erros. Com tal conhecimento o programador se capacitará a avançar no estudo de tratamento de erros e posteriormente aprender técnicas para tal.
Algumas situações
Suspeite de qualquer situação em que seu código fará algo decisivo para o funcionamento do seu sistema. Coisas como conectar a um banco de dados, abrir algum arquivo que contenha parâmetros importantes, carregar uma classe (ou uma biblioteca) essencial na aplicação ou armazenar alguma informação numa tabela de banco de dados, entre muitas outras situações requerem uma execução sem falhas e por isso deve haver uma preocupação maior com os erros que acontecerem.
Podemos dizer que em certas partes de seu código necessitaremos de "vigilantes" atentos a possíveis situações anormais. Veremos então quem são os vigilantes da programação no PHP.
Os "vigilantes"
Podemos rodear determinadas áreas de seu script com "vigilantes", que esperam que algo dê errado para passar o controle da situação aos seus "superiores".
Usamos a palavra-chave
try para representar esses vigias virtuais no seu código fonte.
O try é seguido de um bloco de códigos no qual ele estará responsável por capturar eventuais erros. Os erros são denominados exceções, ou seja, situações que saem do esperado.
Sintaxe:
try {
//Código suspeito
}
Exceções
Em orientação a objeto, no PHP, exceções representam um objeto. Esse objeto necessita de um "molde" para ser construído, esse molde é denominado
Classe e a classe usada para "modelar" uma exceção é a classe
Exception.
Abaixo vemos a classe Exception:
<?php
class Exception {
protected $message = 'Unknown exception'; // Mensagem da exceção
protected $code = 0; // Código da exceção definido pelo usuário
protected $file; // Arquivo gerador da exceção
protected $line; // Linha geradora da exceção
function __construct(string $message=NULL, int code=0);
final function getMessage(); // Mensagem da exceção
final function getCode(); // Código da exceção
final function getFile(); // Arquivo gerador
final function getTrace(); // um array com o backtrace()
final function getTraceAsString(); // String formatada do trace
/* Sobrecarregável */
function _toString(); // String formatada para ser mostrada
}
?>
A classe Exception não precisa ser inserida em seu código, ela é uma classe nativa do PHP introduzida no Zend 2.
Os "superiores"
Os "superiores" são aqueles que tem competência para fazer algo, devem resolver um problema ou passar essa responsabilidade para quem resolva. No PHP usamos a palavra-chave
catch para representar esse superior.
O "catch" é responsável pela identificação do erro, ou seja, ele "sabe" qual o tipo de exceção ocorreu, de acordo com a classe, derivada de Exception, que "modelou" o objeto de exceção passado para ele.
O "catch" necessita de um parâmetro, o nome da classe Exception ou derivada seguida da variável que conterá o objeto da exceção e um bloco de código.
Sintaxe:
catch (Exception $variavel) {
//Código que manipulará tal exceção
}
A palavra-chave catch deve ser posicionada logo após o bloco de código rodeado pela cláusula try. Ficando então assim:
Sintaxe:
try {
//Código suspeito
} catch (Exception $variavel) {
//Código que manipulará tal exceção
}