Como lidar com exceções aninhadas em python

Video: Try...Except em Python - Tratamento de Exceções em Python 3

Às vezes você precisa colocar uma rotina de exceção de manuseio dentro de outro em um processo chamado nidificação. Quando você ninho exceção de manipulação de rotinas, Python tenta encontrar um manipulador de exceção no nível aninhado em primeiro lugar e, em seguida, move-se para as camadas mais externas. Você pode rotinas ninho exceção de manipulação tão profundamente quanto necessário para fazer o seu código de segurança.

Video: Curso Python 300 - Aula 26 - Funções aninhadas

Uma das razões mais comuns para usar uma camada dupla de código de manipulação de exceção é quando você deseja obter entrada de um usuário e precisa colocar o código de entrada em um loop para garantir que você realmente obter as informações necessárias. Os seguintes passos demonstram como este tipo de código pode funcionar.

1Abra uma janela do Python Arquivo

Você vê um editor no qual você pode digitar o código de exemplo.

Video: Tutorial de Python parte 11 - Capturar errores try-except

2Digite o seguinte código para a janela - pressione ENTER após cada linha:

TryAgain = Truewhile TryAgain: try: Valor = int (entrada ("Digite um número inteiro. ")), Exceto ValueError: print ("Você deve digitar um número inteiro!") Tentar: DoOver = entrada ("Tente novamente (y / n)? "), Exceto: print ("OK, até a próxima!") TryAgain = Falseelse: se (str.upper (DoOver) == "N"): TryAgain = Falseexcept KeyboardInterrupt: print ("Você pressionou Ctrl + C!")impressão("Vejo você na próxima vez!") TryAgain = Falseelse: print (Value) TryAgain = False

O código começa com a criação de um circuito de entrada. Usando loops para este tipo de propósito é realmente muito comum em aplicações, porque você não deseja que o aplicativo para terminar cada vez que um erro de entrada é feita. Este é um loop simplificada, e, normalmente, você cria uma função separada para armazenar o código.

Quando o laço começa, o aplicativo pede ao usuário que digite um número inteiro. Pode ser qualquer valor inteiro. Se o utilizador qualquer valor não inteiro ou pressiona Ctrl + C, + Composto C, ou outra interrupção combinação de teclas, o código de tratamento de excepção assume. Caso contrário, a aplicação imprime o valor que o usuário fornecido e conjuntos Tente novamente para Falso, que faz com que o circuito para terminar.

UMA ValueError exceção pode ocorrer quando o usuário comete um erro. Porque você não sabe por que a entrada do usuário o valor errado, você tem que perguntar se o usuário quer tentar novamente. Claro que, ficando mais entrada do usuário poderia gerar outra exceção. O interior experimentar ?? exceto bloco de código lida com essa entrada secundária.

Observe o uso do str.upper () funcionar quando chegar entrada de caracteres do usuário. Esta função faz com que seja possível receber y ou Y como entrada e aceitá-los ambos. Sempre que você perguntar ao usuário para entrada de caracteres, é uma boa idéia para converter caracteres minúsculas para maiúsculas para que você possa executar uma comparação simples (reduzindo o potencial de erro).



o KeyboardInterrupt exceção exibe duas mensagens e, em seguida, sai automaticamente, definindo Tente novamente para Falso. o KeyboardInterrupt ocorre apenas quando o utilizador pressiona uma tecla de combinação específica concebida para terminar a aplicação. O usuário é improvável que querem continuar usando o aplicativo neste momento.

3Escolha Executar → Run Module

Você verá uma janela aberta Python Shell. O aplicativo pede ao usuário para introduzir um número inteiro.

4Digite Olá e pressione Enter

O aplicativo exibe uma mensagem de erro e pergunta se você quer tentar novamente.

Respondendo a uma pergunta sim ou não em Python.

5Digite Y e pressione Enter

A aplicação pede-lhe para introduzir um número inteiro de novo.

Video: Curso de Python - Aula 27 - Blocos de Instrução II - eXcript

6Digite 5,5 e pressione Enter

O aplicativo novamente exibe a mensagem de erro e pergunta se você quer tentar novamente.

7Pressione Ctrl + C, + Composto C, ou outra combinação de teclas para interromper a aplicação

A aplicação termina. Note-se que a mensagem é a de um a excepção interior. A aplicação nunca chega a exceção externa porque o manipulador de exceção interna fornece a manipulação de exceção genérica.

Um circuito de entrada em Python.

8Escolha Executar → Run Module

Você verá uma janela aberta Python Shell. O aplicativo pede ao usuário para introduzir um número inteiro.

Pressione Ctrl + C para interromper o aplicativo Python.

9Pressione Ctrl + C, + Composto C, ou outra combinação de teclas para interromper a aplicação

A aplicação termina. Note-se que a mensagem é a de um a excepção exterior. Nos passos preious, o utilizador termina a aplicação pressionando uma tecla de interrupção. No entanto, o aplicativo usa dois manipuladores de exceção diferentes para resolver o problema.


Publicações relacionadas