Articles

Python Exception Handling Usando tentativa, excepto e finalmente declaração

Excepções em Python

Python tem muitas excepções incorporadas que são levantadas quando o seu programa encontra um erro (algo no programa corre mal).

Quando estas excepções ocorrem, o intérprete Python pára o processo actual e passa-o para o processo de chamada até que seja tratado. Se não for tratado, o programa irá falhar.

Por exemplo, consideremos um programa onde temos uma função A que chama a função B, que por sua vez chama a função C. Se ocorrer uma excepção na função C mas não for tratada em C, a excepção passa para B e depois para A.

Se nunca for tratada, é exibida uma mensagem de erro e o nosso programa pára repentinamente inesperadamente.

Cobrir excepções em Python

Em Python, as excepções podem ser tratadas usando uma cláusula try.

A operação crítica que pode levantar uma excepção é colocada dentro da cláusula try. O código que trata das excepções é escrito na cláusula except cláusula.

Podemos assim escolher quais as operações a realizar depois de termos apanhado a excepção. Aqui está um exemplo simples.

Output

Neste programa, fazemos um loop através dos valores da lista da lista aleatória. Como mencionado anteriormente, a parte que pode causar uma excepção é colocada dentro do try bloco.

Se não ocorrer qualquer excepção, o except bloco é ignorado e o fluxo normal continua(para o último valor). Mas se ocorrer qualquer excepção, é apanhado pelo except bloco (primeiro e segundo valores).

Aqui, imprimimos o nome da excepção utilizando o módulo exc_info() função dentro de sys. Podemos ver que a causa ValueError e 0 causa ZeroDivisionError.

Desde que cada excepção em Python herde da base Exception classe, também podemos executar a tarefa acima referida da seguinte forma:

Este programa tem a mesma saída que o programa acima.

Cobrir Excepções Específicas em Python

No exemplo acima, não mencionámos qualquer excepção específica no except cláusula.

Esta não é uma boa prática de programação, uma vez que apanhará todas as excepções e tratará todos os casos da mesma forma. Podemos especificar que excepções uma cláusula except deverá apanhar.

A try pode ter qualquer número de cláusulas except para tratar diferentes excepções, contudo, apenas uma será executada no caso de ocorrer uma excepção.

Podemos utilizar um tuple de valores para especificar múltiplas excepções numa cláusula de excepção. Aqui está um exemplo de pseudo código.

try: # do something passexcept ValueError: # handle ValueError exception passexcept (TypeError, ZeroDivisionError): # handle multiple exceptions # TypeError and ZeroDivisionError passexcept: # handle all other exceptions pass

Subir Excepções em Python

Na programação Python, as excepções são levantadas quando ocorrem erros em tempo de execução. Podemos também levantar excepções manualmente utilizando o raise palavra-chave.

Podemos opcionalmente passar valores à excepção para esclarecer porque é que essa excepção foi levantada.

Python tentar com outra cláusula

Em algumas situações, poderá querer executar um determinado bloco de código se o bloco de código dentro de try correr sem quaisquer erros. Para estes casos, pode utilizar o opcional else palavra-chave com o try declaração.

nota: As excepções na outra cláusula não são tratadas pela anterior excepto as cláusulas.

Vejamos um exemplo:

Output

Se passarmos um número ímpar:

Enter a number: 1Not an even number!

Se passarmos um número par, o recíproco é computado e exibido.

Enter a number: 40.25

No entanto, se passarmos 0, obtemos ZeroDivisionError como o bloco de código no interior else não é manipulado pelo precedente except.

Python try…finally

The try statement in Python can have an optional finally clause. Esta cláusula é executada não importa o quê, e é geralmente utilizada para libertar recursos externos.

Por exemplo, podemos estar ligados a um centro de dados remoto através da rede ou trabalhando com um ficheiro ou uma Interface Gráfica de Utilizador (GUI).

Em todas estas circunstâncias, temos de limpar o recurso antes de o programa parar, quer tenha sido executado com sucesso ou não. Estas acções (fechar um ficheiro, GUI ou desligar da rede) são executadas na cláusula finally para garantir a execução.

Aqui está um exemplo de operações de ficheiro para ilustrar isto.

try: f = open("test.txt",encoding = 'utf-8') # perform file operationsfinally: f.close()

Este tipo de construção assegura que o ficheiro é fechado mesmo que ocorra uma excepção durante a execução do programa.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *