Como lidar com exceções aninhadas em Python

À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 exteriores. Você pode rotinas ninho exceção de manipulação tão profundamente quanto necessário para fazer o seu código de segurança.

Uma das razões mais comuns de usar uma dupla camada de código de manipulação de exceção é quando você deseja obter entrada de um usuário e necessário 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 poderia funcionar.

1

Abra uma janela do Python Arquivo.

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

2

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

TryAgain = Truewhile TryAgain: try: Valor = int (input ( "Digite um número inteiro.")), Exceto ValueError: ( "Você deve digitar um número inteiro") print tentar: DoOver = input ( "Tente novamente (y / n )? "), exceto: print (" OK, vê-lo na próxima vez ") TryAgain = Falseelse: if (str.upper (DoOver) ==" N "): TryAgain = Falseexcept KeyboardInterrupt: print (" você pressionou Ctrl + C ! ") print (" Até a próxima ") 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 efeito é bastante comum em aplicações, porque você não deseja que o aplicativo para terminar toda vez que um erro de entrada é feita. Este é um loop simplificada, e, normalmente, você criar 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. Ele pode ser qualquer valor inteiro. Se o usuário digitar qualquer valor não inteiro ou pressionar Ctrl + C, Cmd + C, ou outra interrupção combinação de teclas, o código de manipulação de exceçã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 loop ao fim.

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 # 133- excepto bloco de código processa esta entrada secundária.

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

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

3

Escolha Run-Run Module.

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

4

Digite Olá e pressione Enter.

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

5

Digite Y e pressione Enter.

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

6

Digite 5,5 e pressione Enter.

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

7

Pressione Ctrl + C, Cmd + C, ou outra combinação de teclas para interromper o aplicativo.

A aplicação termina. Observe que a mensagem é a partir da exceção interna. 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.

8

Escolha Run-Run Module.

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

9

Pressione Ctrl + C, Cmd + C, ou outra combinação de teclas para interromper o aplicativo.

A aplicação termina. Note-se que a mensagem é aquele a partir do exterior excepção. Nas etapas preious, o usuário termina o aplicativo pressionando uma tecla de interrupção. No entanto, o aplicativo usa dois manipuladores de exceção diferentes para resolver o problema.

menu