Declarações de tentativa de exceção em Python

Declarações de tentativa de exceção em Python
“Ao escrever código em python, especialmente se for um pouco mais complicado, é mais provável que você encontre erros. Portanto, a maneira de escrever um bom código é lidar com esses erros com habilidade. Precisamos garantir que possamos permitir suavemente esses erros em outra rota. E assim, para esse fim, em Python, a declaração de tentativa de exceção foi criada. A declaração de tentativa de exceção consiste em um bloco de tentativa e um ou mais, exceto blocos. Neste tutorial, estaremos aprendendo sobre a declaração de tentativa de exceção.”

Declaração de tentativa de exceção

A instrução Try-Except se parece mais disso:

tentar:
Código
Exceto ExceptionName:
Código

Então, temos a declaração de tentativa e, em seguida, o código é colocado lá; Este é o código principal que você deseja executar. Depois, há a declaração exceto com outro conjunto de códigos, mas esse código deve lidar com a exceção. Python tentará em primeiro lugar executar todo o código na instrução TRY. Quando não há erro, tudo vai bem, e a declaração exceto é simplesmente passada (ignorada). Se, por outro lado, ocorrer uma exceção, o Python verificará se corresponde ao nome da exceção na declaração, exceto. Se corresponder, começará a executar o código da declaração, exceto.

Exemplo 1

principal.py
tentar:
y = (2/3)
impressão (y)
exceto zerodivisisionError como erro:
Print ("Erro: % S" % Erro)
Print ("Esta declaração está fora da cláusula Try-Except.")

Saída:

0.6666666666666666

Esta declaração está fora da cláusula de tentar exceção.

Processo terminado com o código de saída 0

Então, aqui, temos uma instrução Try-Except e, em seguida, um pouco de código fora do bloco Try-Except. Como estamos dividindo 2 por 3 e que nos dá um número válido, ele executará a instrução TRY e depois ignorará a declaração, porque não há zerodivisionError. Uma vez que ignora a declaração exceto, continua com o restante do programa e termina suavemente. O objetivo deste exemplo é mostrar que a declaração exceto pode ser ignorada.

Exemplo #2

principal.py
tentar:
y = (2/0)
impressão (y)
exceto zerodivisisionError como erro:
Print ("Erro: % S" % Erro)

Saída:

Erro: divisão por zero

Processo terminado com o código de saída 0

Nesse caso, no bloco de tentativa, estamos tentando dividir 2 por 0 e atribuir o valor a y. Como você deve ou não saber, você simplesmente não pode se dividir por 0, então há um pequeno problema aqui. Como queremos ser habilidosos em lidar com erros, decidimos escrever um bloqueio, exceto com o nome de exceção de ZerodivisionError. O que isso faz é pegar o ZerodivisisionError ou, em outras palavras, divisão por zero erro e imprimir o erro. Então, o que recebemos? Uma declaração dizendo que você simplesmente não pode se dividir por zero. Mas o ponto é que nosso programa não caiu! Em vez disso, apontou a falha.

Exemplo #3

principal.py
tentar:
arquivo = "arquivo.TXT"
f = aberto (arquivo, 'r')
impressão (f.ler())
exceto zerodivisisionError como erro:
Imprimir (erro)
Exceto SyntaxError como Serror:
Imprimir (Serror)
Exceto FileNotFoundError como Ferror:
Impressão (Ferror)

Saída:

[Errno 2] Nenhum arquivo ou diretório: 'arquivo.TXT'

Processo terminado com o código de saída 0

O objetivo deste exemplo é simples - você pode escrever quantas exceções quiser. Se você acha que pode haver um FileNotFoundError, você o adiciona à lista de erros. Isso significa que, quando o Python tentar executar o bloco de tentativa, ele não encontra o arquivo, por isso sai da declaração de tentativa e pesquisa através das declarações, exceto para ver se algum deles corresponde ao erro levantado. Desde que o último corresponde, ele imprimirá o Ferror ou o FileNotFoundError.

Exemplo #4

Nesse caso, vamos analisar um exemplo que leva este formato:

tentar:
Conjunto de código 1
Conjunto de código 2
Exceto ExceptionName1:
Conjunto de código 3
Exceto ExceptionName2:
Conjunto de código 4
Exceto ExceptionName3:
Conjunto de código 5 principal.py
tentar:
arquivo = "arquivo.TXT"
f = aberto (arquivo, 'r')
impressão (f.ler())
y = (2/0)
impressão (y)
exceto zerodivisisionError como erro:
Imprimir (erro)
Exceto SyntaxError como Serror:
Imprimir (Serror)
Exceto FileNotFoundError como Ferror:
Impressão (Ferror)

Saída:

[Errno 2] Nenhum arquivo ou diretório: 'arquivo.TXT'

Processo terminado com o código de saída 0

Neste exemplo em particular, temos dois erros - um FileNotFoundError e um ZerodivisionError. Mas observe como o primeiro erro é o FileNotFoundError. Então, o que Python faz? Começa a ler o código, a declaração de tentativa e encontra o FileNotFoundError, por isso sai da declaração de tentativa e começa a examinar as várias declarações, exceto as declarações, e encontra o FileNotFoundError, exceto a declaração e, assim, executa o código dentro dele. Aqui, o segundo erro é omitido e não temos um zerodivisionError.

Exemplo #5

principal.py
tentar:
x = '9'
Se x> 6:
Imprimir (x/6)
exceto zerodivisisionError como erro:
Imprimir (erro)
exceto:
print ("algum outro erro")

Saída:

Algum outro erro

Processo terminado com o código de saída 0

Então, neste exemplo, havia um TypeError porque você não pode usar> entre uma string e um número inteiro. Portanto, o bloco de tentativa é tentado e, quando enfrenta o tipo de erro, ele vai direto para o "geral", exceto a cláusula e executa que. Em outras palavras, se você quiser capturar erros e não conhece os nomes deles, pode deixar a parte da exceção em branco.

O objetivo deste exemplo é que você pode usar a declaração, exceto sem nomear um erro, e ele deve, em teoria, pegar qualquer erro lançado, mas não é aconselhado! Em outras palavras, apenas usar, exceto sem um nome de exceção, não é realmente aconselhado.

Conclusão

A declaração Try-Except é uma bênção para todos os programadores que usam Python. A declaração de tentativa de exceção consiste em dois ou mais blocos. O primeiro bloco é sempre o bloco de instrução Try que é recheado com código. Depois disso, você pode adicionar um ou mais, exceto blocos para capturar erros muito específicos. Geralmente, você também deve atribuir um nome à instrução EXC (exceto ZerodivisisionError); No entanto, se você realmente não sabe que tipo de erro encontrará, pode deixá -lo em branco (ex: exceto). De qualquer maneira, o melhor de todos os programadores saberá não cometer erros e, portanto, tendem a utilizar menos, exceto blocos, mas para cada um delas seu gosto. Portanto, use a declaração de tentativa de exceção com sabedoria. Não se esqueça que a programação implica habilidade.

Codificação feliz!