Introdução Esta é uma parte da minha série, manipulação de exceção em PHP. Nesta parte da série de olharmos para o básico de exceções em PHP. Você precisa de conhecimentos básicos em PHP e PHP Programação Orientada a Objetos, a fim de compreender esta série. Se você não tem conhecimento de qualquer um desses campos, em seguida, a partir deste blog, ler a série, cuja primeira parte é intitulada, "Introdução ao PHP" e um outro cuja primeira parte é intitulada "Fundamentos de OOP em PHP".
Para chegar a qualquer uma das séries, basta digitar o título e meu nome Chrys na caixa de pesquisa da página e clique em Pesquisar. Nota: Se você não pode ver o código ou se você acha que alguma coisa está faltando (link quebrado, imagem ausente), apenas contacte-me em [email protected]. Ou seja, contacte-me para o menor problema que você tem sobre o que você está lendo.
Erro de tempo Exemplo Considere o seguinte código: $ numerador = 8; $ denominador = 2; if ($ denominador = 0!) {$ resposta = $ numerador /denominador $; echo $ resposta; } Else {echo "Divisão por zero não é permitido!"; }?> Este código basicamente divide dois números. Na vida você não pode dividir um número por zero. Assumindo que o denominador é introduzido pelo utilizador, ele pode entrada zero. A divisão (processo) por zero não deve ser permitido. Vamos olhar para o que está no código: as duas primeiras afirmações são de inicialização de números inteiros.
A divisão deve ter lugar no bloco se. A condição If verifica se o denominador é zero. Se não for, a divisão ocorre no bloco-se. Se for, a outra parte do if-construção exibe uma mensagem de erro para o usuário. Este segmento de código é OK, porque se o denominador é zero, o bloco se não será executado e nenhuma divisão terá lugar. Com o código de cima, a execução do programa prossegue depois do se /outra construção. Este if /else construção faz a divisão e impede erro de execução de tomar lugar.
O bloco faz-se a divisão; Verifica se as condições se-ia ocorrer erro; se iria ocorrer erro, o bloco else exibe uma mensagem de alerta e se o bloco e divisão não são executados. Componentes básicos de Exception Em termos simples, exceção é um erro. Com a manipulação de exceção, você tem o que é chamado de construção try /catch; composta dos blocos try e catch. O bloco try tem uma expressão importante, que é, jogar. lance leva um novo objeto chamado o objeto de exceção. O objeto de exceção é um objeto predefinido que o ajuda a lidar com exceções.
Na acima if /else construir, o segmento de código de juros, que é o segmento necessário, é o bloco se. Este bloco se-é o que faz a divisão. Com manipulação de exceção, que segmento de código de interesse vai para o bloco try-; a mensagem de erro segmento de código ou erro de segmento de código manipulador vai para o bloco catch. A expressão lance no bloco do try chama a-bloco catch passando um novo objeto de exceção para ele. A construção de captura é como uma função.
Esta é a sintaxe básica para manipulação de exceção, try {//declarações de interesse throw new Exception (errorMessage, código); } Catch (Exception $ e) {//processar o erro} O argumento para a expressão lance não entra em parênteses. É uma nova Exception objeto instanciado que não precisa ter um nome. Você pode torcer o seu código ao redor para dar-lhe um nome, mas está tudo bem, pois é acima. Os parâmetros do novo objeto de exceção são ambos opcionais. O primeiro é a mensagem de erro de sua escolha que você quer dar ao usuário do programa.
O segundo é um número inteiro de sua escolha, que representa o erro. O catch-bloco deve seguir imediatamente o bloco try em sua digitação, como na sintaxe acima. Ele recebe o novo objeto de exceção instanciado lançada. O parâmetro para o bloco catch é, "Exception $ e". Aqui, a palavra, Exception, significa o tipo de objeto recebido, é um objeto de exceção. $ e é a variável que identifica o novo objeto de exceção instanciado (recebido no bloco de captura).
O programa anterior é re-escrito usando o try /catch construir a seguinte: $ numerador = 8; $ denominador = 2; try {if ($ denominador = 0!) {$ resposta = $ numerador /denominador $; echo $ resposta; } Else {throw new Exception ("Divisão por zero não é permitido!"); }} Catch (Exception $ e) {echo $ e-> getMessage (); }?> Leia e tentar o programa acima. Altere o valor de US $ denominador para zero e tente o programa novamente. Lembre-se, para o operando lance acima, os dois argumentos da função de construtor da classe Exception são opcionais.
Neste código, somente a mensagem de erro de escolha do programador foi dado. Se o programador não dar a este argumento, a mensagem de erro padrão de "exceção desconhecido" seria realizada pelo novo objeto de exceção instanciado. O bloco catch pega o objeto exceção lançada como o parâmetro (argumento), $ e. A classe de exceção tem um método que iria ler a mensagem de erro que você digitou durante a instanciação do novo objeto de exceção. O nome de método é, getMessage. O catch-bloco acima simplesmente ecoa a mensagem. Leia o código acima novamente.
Em muitos casos, o bloco try tem um equivalente se-condição cujo bloco será executado se a condição não detectar o erro. Se a condição detecta o erro, o bloco se não será executado, ea outra parte vai lançar a exceção; ou seja, a outra parte irá chamar o bloco catch enviar o argumento (instanciado objeto de exceção) da expressão lance, a ele. O bloco catch usa o argumento para exibir uma mensagem de erro apropriada (digitado durante a instanciação) para o usuário. Isto é o que acontece em muitos casos.
Os erros não são normalmente tratadas no verdadeiro sentido da palavra; Normalmente uma mensagem de erro é enviada para o utilizador, se um construir-no bloco de teste evita que o erro de facto ocorre. Após esta execução, o programa continua em sequência, a partir da construção try /catch; e não há terminação de programa mesmo que foi detectado um erro.
Jogue Expressão em uma função Você pode colocar o que você precisa para o bloco try em uma função, como ilustrado abaixo: $ numerador = 8; $ denominador = 2; funcionar errFn () {if {$ resposta = $ numerador /denominador $ ($ denominador = 0!); echo $ resposta; } Else {throw new Exception ("Divisão por zero não é permitido!"); }} Try {errFn (); } Catch (Exception $ e) {echo $ e-> getMessage (); }?>