5. Tratamento de exceções e problemas de exceção personalizada em Python

1. Descrição:

É um pouco difícil garantir que o código escrito por si mesmo seja infalível, depois que o código relatar uma exceção, o tratamento correto da mesma ajudará a melhorar a estabilidade e a flexibilidade do produto desenvolvido.

2. try...except lida com exceções

Isso é usado para lidar com exceções em python. O código em try...except será executado normalmente. Se não houver exceção, o bloco de código except será ignorado e try-except terminará. Se houver um problema com um determinado sentença de código em try-except Abnormal, o restante do código interrompe a execução, se a exceção ocorrer for consistente com a exceção especificada, execute o bloco de código na exceção, após o término do processamento da exceção, todo o aplicativo continua a ser executado, se a exceção ocorrer e não corresponder ao especificado em except, pule a instrução try, o programa continua a lançar uma exceção e encerra a execução do código, e também será processado em combinação com else ou finalmente. O uso simples é do seguinte modo:

nums = [1, 2, 3, 4]

try:
    print(nums.encode('utf-8'))
    print('123')
except NameError:
    print('发生特定异常情况')
except (AttributeError, NameError, KeyError):  # 接收多种异常情况
    print('发生多种异常情况')
except:
    print('接收所有的异常情况')
else:
    print('上面的代码如果没有异常,则执行这里的代码')
finally:
    print('不管上面有没有异常,都会执行的代码')

3. Obtenha informações relacionadas à exceção

Às vezes é necessário saber o tipo de erro anormal, para que seja possível realizar processamentos diferenciados de acordo com o tipo. Existem duas maneiras de obter informações de exceção:
a primeira : use a própria classe Exception

nums = [1, 2, 3, 4]

try:
    print(nums.encode('utf-8'))
    print('123')
except Exception as e:
    print(e.args)  # 输出异常的简要信息
    print(type(e).__name__)  # 输出异常的类型名称

A saída é a seguinte. Você pode ver que as informações de saída são relativamente simples, mas esse método pode nome do tipo da exceção.
insira a descrição da imagem aqui
O segundo método : use o pacote traceback
para exibir informações detalhadas sobre a exceção, incluindo qual linha do arquivo em que o código de erro está, tipo de exceção, etc.

import traceback

nums = [1, 2, 3, 4]

try:
    print(nums.encode('utf-8'))
    print('123')
except:
    print(traceback.format_exc())

A saída é a seguinte:
insira a descrição da imagem aqui

4. Lançar exceções ativamente

Você pode usar a instrução raise para lançar uma exceção, que precisa ser seguida por um objeto , que deve ser derivado de Exception.

nums = [1, 2, 3, 4]

try:
    num = 5
    if num in nums:
        print(num)
    else:
        myException = Exception("变量不在列表内...")	# 创建一个异常对象
        raise myException	# 主动抛出异常
except Exception as err:	# 接受异常,err的内容就是错误原因
    print(err)	# 输出异常信息(或者针对异常做其他处理)

5. Classe de exceção personalizada

Primeiro : Certifique-se de herdarclasse Exception
Segundo : Redefina as funções init e __str__

nums = [1, 2, 3, 4]

# 继承异常基类 Exception
class myError(Exception):

    # 下面两个魔法函数是必须要写的

    # __init__函数负责类变量的初始化(一般是接报错的内容)
    def __init__(self, message):
        self.message = message

    # __str__函数负责根据类对象名称,返回异常信息
    def __str__(self):
        return "出现错误:" + self.message

try:
    num = 5
    if num in nums:
        print(num)
    else:
        myerror = myError("数字不在列表内")  # 创建一个自定义异常类型的变量
        raise myerror  # 手动抛出异常
except Exception as err:
    print(err)

Atualizando continuamente, por favor, preste mais atenção para ...

おすすめ

転載: blog.csdn.net/FY_13781298928/article/details/129709260