Coletânea Python do ZERO às Redes Neurais Artificiais
Tratando exceções
Tanto na programação comum estruturada quanto na orientada a objetos,
uma prática comum é, na medida do possível, tentar prever os erros que o usuário pode cometer ao interagir com nosso programa e tratar isso como exceções, de forma que o programa não trave, nem feche inesperadamente, mas acuse o erro que o usuário está cometendo para que o mesmo não o repita, ou ao menos, fique ciente que aquela funcionalidade não está disponível.
Na programação estruturada temos aquela estrutura básica de declarar uma exceção e por meio dela, via try e except, tentar fazer com que o interpretador redirecione as tentativas sem sucesso de executar uma determinada ação para alguma mensagem de erro ao usuário ou para alguma alternativa que retorne o programa ao seu estado inicial. Na programação orientada a objetos esta lógica e sintaxe pode ser perfeitamente usada da mesma forma. Ex:
Repare na estrutura, é normalmente suportado pelo Python, que exceções sejam criadas também como classe. Inicialmente criamos uma classe de nome Erro001 que herda a função reservada ao sistema Exception.
A partir disto, criamos uma função que instancia uma variável para Erro001 atribuindo uma string onde consta uma mensagem de erro pré-programada ao usuário (lembrando que a ideia é justamente criar mensagens de erro que orientem o usuário sobre o mesmo, e não as mensagens padrão de erro que o interpretador gera em função de lógica ou sintaxe errada).
Em seguida, exatamente igual ao modelo estruturado, criamos as funções try e except, onde realizamos as devidas associações para que caso o usuário cometa um determinado erro seja chamada a mensagem de exceção personalizada. Neste caso o retorno será: ERRO: Ação não permitida!