Como lidar com mais específicas para Exceções menos específico em Python
Uma estratégia para tratamento de exceções em Python é fornecer específica exceto cláusulas para todas as exceções conhecidas e genérico exceto cláusulas para lidar com exceções desconhecidas. Confira a hierarquia de exceção que usa Python. Ao visualizar este gráfico, BaseException é superior a excepção. A maioria são derivados de excepções Exceção. Ao trabalhar através de erros de matemática, você pode usar o genérico ArithmeticError ou uma forma mais específica ZeroDivisionerror exceção.
avalia Python exceto cláusulas na ordem em que aparecem no arquivo de código-fonte. A primeira cláusula é examinado em primeiro lugar, a segunda cláusula é examinado segundo, e assim por diante. Os passos seguintes ajudá-lo a examinar um exemplo que demonstra a importância do uso da ordem exceção correta. Neste caso, você pode executar tarefas que resultam em erros de matemática.
Abra uma janela do Python Arquivo.
Você vê um editor no qual você pode digitar o código de exemplo.
Digite o seguinte código para a janela - pressione ENTER após cada linha:
tentar: Value1 = int (input ( "Digite o primeiro número:")) Value2 = int (input ( "Digite o segundo número:")) Output = Value1 / Value2except ValueError: print ( "Você deve digitar um número inteiro!" ), exceto KeyboardInterrupt: print ( "Você pressionou Ctrl + C!"), exceto ArithmeticError: print ( "ocorreu um erro de matemática indefinido."), exceto ZeroDivisionerror: print ( "Tentativa de divisão por zero!") else: print (Output)
O código começa pela obtenção de duas entradas: Value1 e value2. Os dois primeiros exceto cláusulas de manipular a entrada inesperada. O segundo dois exceto cláusulas de lidar com exceções de matemática, tais como a divisão por zero. Se tudo correr bem com a aplicação, a outro cláusula executa, que imprime o resultado da operação.
Escolha Run-Run Module.
Você verá uma janela aberta Python Shell. O aplicativo pede para você digitar o primeiro número.
Digite Olá e pressione Enter.
Como esperado, Python exibe o ValueError mensagem de exceção. No entanto, sempre vale a pena verificar se há problemas potenciais.
Escolha Run-Run Module novamente.
Você verá uma janela aberta Python Shell. O aplicativo pede para você digitar o primeiro número.
Tipo 8 e pressione Enter.
A aplicação pede-lhe para introduzir o segundo número.
Tipo 0 e pressione Enter.
Você vê a mensagem de erro para o ArithmeticError exceção. O que você deve realmente ver é o ZeroDivisionerror exceção porque é mais específico do que o ArithmeticError exceção.
Inverter a ordem das duas exceções para que eles se parecem com isto:
exceto ZeroDivisionerror: print ( "Tentativa de divisão por zero!"), exceto ArithmeticError: print ( "Ocorreu um erro de matemática indefinido.")
Execute as etapas 5 a 7 novamente.
Desta vez, você vê o ZeroDivisionerror mensagem de exceção porque as exceções aparecem na ordem correta.
Execute as etapas 5 a 7 novamente, mas tipo 2 para o segundo número em vez de 0.
Desta vez, o aplicativo finalmente, relata um valor de 4,0 saída.
Observe que a saída é um valor de ponto flutuante. Divisão resulta em um valor de ponto flutuante a menos que você especificar que deseja uma saída inteiro usando o operador de divisão andar (//).