5. Problemas de manejo de excepciones y excepciones personalizadas en Python

1. Descripción:

Es un poco difícil asegurar que el código escrito por uno mismo sea infalible, luego de que el código reporte una excepción, su correcto manejo ayudará a mejorar la estabilidad y flexibilidad del producto desarrollado.

2. try...except maneja las excepciones

Esto se usa para manejar excepciones en python. El código en try...except se ejecutará normalmente. Si no hay excepción, el bloque de código de excepción se omitirá y try-except finalizará. Si hay un problema con un determinado oración de código en try-except Anormal, el resto del código detiene la ejecución, si la excepción ocurre es consistente con la excepción especificada, luego ejecuta el bloque de código en la excepción, después de que finaliza el procesamiento de la excepción, toda la aplicación continúa ejecutándose, si la excepción ocurre y no coincide con lo especificado en excepto, salte la declaración de prueba, el programa continúa lanzando una excepción y finaliza la ejecución del código, y también se procesará en combinación con else o finalmente. El uso simple es como sigue:

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. Obtener información relacionada con excepciones

A veces es necesario conocer el tipo de error anómalo, de modo que se puedan realizar diferentes procesos según el tipo. Hay dos formas de obtener información de excepción:
la primera : usar la propia clase 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__)  # 输出异常的类型名称

El resultado es el siguiente. Puede ver que la información de salida es relativamente simple, pero este método puede nombre de tipo de la excepción.
inserte la descripción de la imagen aquí
El segundo método : use el paquete de rastreo
para generar información detallada sobre la excepción, incluida qué línea del archivo en el que se encuentra el código de error, tipo de excepción, etc.

import traceback

nums = [1, 2, 3, 4]

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

La salida es la siguiente:
inserte la descripción de la imagen aquí

4. Activar excepciones

Puede usar la instrucción raise para generar una excepción, que debe ir seguida de un objeto , que debe derivarse 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. Clase de excepción personalizada

Primero : Asegúrese de heredarclase Exception
Segundo : Redefina las funciones init y __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)

Actualización continua, preste más atención a...

Supongo que te gusta

Origin blog.csdn.net/FY_13781298928/article/details/129709260
Recomendado
Clasificación