Una visita obligada para los principiantes de Python: colección de manejo de excepciones de Python

anormal

  • Los errores en un sentido amplio se dividen en errores y excepciones
  • Se pueden evitar errores
  • La anomalía se refiere a un problema que ocurre bajo la premisa de una lógica gramatical correcta.
  • En Python, una excepción es una clase que se puede manejar y usar

Clasificación anormal

BaseException La clase base de todas las excepciones.

Clase base de excepción para errores comunes

ArithmeticError La clase base para todos los errores de cálculo numérico

Clase base de advertencia

La declaración de aserción AssertError (aserción) falló

AttributeError Intento de acceder al atributo de objeto desconocido

DeprecattionWarning Advertencia sobre funciones obsoletas

EOFError Indicador de fin de archivo de entrada de usuario EOF (Ctrl + d)

Error de cálculo de punto flotante FloattingPointError

FutureWarning Una advertencia de que la semántica de la estructura cambiará en el futuro

Cuando se llama al método GeneratorExit generator.close ()

ImportError cuando falla la importación de un módulo

IndexError El índice está fuera del rango de la secuencia

Búsqueda de KeyError para una palabra clave inexistente en el diccionario

Teclado Tecla de interrupción de entrada de usuario interrumpida (Ctrl + c)

MemoryError Desbordamiento de la memoria (la memoria se puede liberar eliminando el objeto)

NamerError intentó acceder a una variable que no existe

El método NotImplementedError aún no se implementó

OSError Una excepción generada por el sistema operativo (por ejemplo, abrir un archivo que no existe)

OverflowError La operación numérica excede el límite máximo

OverflowWarning Advertencia anterior sobre la promoción automática a entero largo (largo)

PendingDeprecationWarning Una advertencia de que se abandonarán las funciones

ReferenceError La referencia débil (referencia débil) intenta acceder a un objeto que ha sido reclamado por el mecanismo de recolección de basura.

RuntimeError Error de tiempo de ejecución general

RuntimeWarning Advertencia de comportamiento operativo sospechoso (comportamiento en tiempo de ejecución)

El iterador StopIteration no tiene más valores

SyntaxError Error de sintaxis de Python

SyntaxWarning Advertencia de sintaxis sospechosa

IndentationError Error de sangría

TabError Uso combinado de tabulación y espacio

Error del sistema del compilador SystemError Python

El proceso del compilador de Python SystemSalir está cerrado

TypeError operación no válida entre diferentes tipos

UnboundLocalError accede a una variable local no inicializada (una subclase de NameError)

UnicodeError Errores relacionados con Unicode (una subclase de ValueError)

UnicodeEncodeError Error de codificación Unicode (subclase de UnicodeError)

UnicodeDecodeError Error de decodificación de Unicode (subclase de UnicodeError)

UserWarning Advertencia generada por código de usuario

ValueError pasó un parámetro no válido

ZeroDivisionError dividir por cero

l = [1,2,3,4,5]
# 除零错误
num = int(input("Please input your num: "))
print(100/num)
Please input your num: 0
---------------------------------------------------------------------------

ZeroDivisionError                         Traceback (most recent call last)

<ipython-input-1-8abb196ce2aa> in <module>
      2 # 除零错误
      3 num = int(input("Please input your num: "))
----> 4 print(100/num)
ZeroDivisionError: division by zero

Manejo de excepciones

  • No hay garantía de que el programa siempre se ejecute correctamente.
  • Sin embargo, hay que asegurarse de que los problemas obtenidos por el programa en el peor de los casos se gestionen adecuadamente.
  • La sintaxis completa del módulo de manejo de excepciones de Python es:

intentar:

Intente lograr una determinada operación,

Si no hay excepciones, la tarea se puede completar

Si ocurre una excepción, arroje la excepción del bloque de código actual para intentar resolver la excepción

excepto el tipo de excepción 1:

Solución 1: se usa para tratar de manejar la excepción aquí para resolver el problema

 

excepto el tipo de excepción 2:

Solución 2: se usa para tratar de manejar la excepción aquí para resolver el problema

excepto (tipo de excepción 1, tipo de excepción 2 ...):

Solución: use el mismo método de manejo para múltiples excepciones

 

excepto:

Si no hay excepciones, el código aquí se ejecutará

 

por fin:

¿Hay algún código de excepción para ejecutar?

  • Proceso
  1. Ejecute la siguiente declaración intente
  2. Si ocurre una excepción, busque la excepción correspondiente en la declaración except y manejela
  3. Si no hay excepción, ejecute el contenido de la instrucción else
  4. Finalmente, independientemente de si hay una excepción, la sentencia finalmente debe ejecutarse

Mucha gente aprende Python y no sabe por dónde empezar.
Muchas personas aprenden Python y después de dominar la gramática básica, no saben dónde encontrar casos para comenzar.
Muchas personas que han realizado estudios de casos no saben cómo adquirir conocimientos más avanzados.
Entonces, para estos tres tipos de personas, les proporcionaré una buena plataforma de aprendizaje, ¡gratis para recibir tutoriales en video, libros electrónicos y el código fuente del curso!
Grupo QQ: 705933274

  • Excepto excepto (al menos uno), else y finalmente son opcionales
# 简单异常案例
try:
    num = int(input("Please input your number:"))
    rst = 100/num
    print("计算结果是:{}".format(rst))
except:
    print("输入错误")
    # exit是退出程序的意思
    exit()

Introduzca su número: 0
error de entrada 

# 简单异常案例
# 给出提示信息
try:
    num = int(input("Please input your number:"))
    rst = 100/num
    print("计算结果是:{}".format(rst))
# 捕获异常后,把异常实例化,出错信息会在实例里
# 注意以下写法
# 以下语句是捕获ZeroDivisionError异常并实例化实例e
except ZeroDivisionError as e:
    print("输入错误")
    print(e)
    # exit是退出程序的意思
    exit()
# 简单异常案例
# 给出提示信息
try:
    num = int(input("Please input your number:"))
    rst = 100/num
    print("计算结果是:{}".format(rst))
# 如果是多种error的情况
# 需要把越具体的错误,越往前放
# 在异常类继承关系中,越是子类的异常,越要往前放,
# 越是父类的异常,越要往后放 、

# 在处理异常的时候,一旦拦截到某一个异常,则不再继续往下查看,直接进行下一个
# 代码,即有finally则执行finally语句,否贼就执行下一个大的语句
except ZeroDivisionError as e:
    print("输入错误")
    print(e)
    # exit是退出程序的意思
    exit()
except NameError as e:
    print("名字起错了")
    print(e)

except AttributeError as e:
    print("属性错误")
    print(e)
    exit()
# 常见错误的基类
# 如果写下面这句话,常见异常都会拦截住
# 而且下面这句话一定是最后一个excepttion
except Exception as e:
    print("我也不知道就出错了")
    print(e)

except ValueError as e:
    print("NO>>>>>>>>>>>")
print("hahaha")

 Por favor ingrese su número: ffff
si no lo sé, cometió un error
literal inválido para int () con base 10: 'ffff'
jajaja

El usuario lanza una excepción manualmente

  • Cuando en algunos casos, el usuario desea generar una excepción por sí mismo, puede usar
  • aumentar la palabra clave para generar una excepción
# raise 案例
try:
    print("I love you")
    print(3.1415926)
    # 手动引发一个异常
    # 注意语法:raise ErrorClassName
    raise ValueError
    print("还没完呀")
except NameError as e:
    print("NameError")
except ValueError as e:
    print("ValueError")
except Exception as e:
    print("有异常")
finally:
    print("我肯定会被执行的")

Te amo
3.1415926
ValueError
Definitivamente seré ejecutado 

# raise 案例-2
# 自定义异常
# 需要注意:自定义异常必须是系统异常的子类
class DanaValueError(ValueError):
    pass

try:
    print("I love you")
    print(3.1415926)
    # 手动引发一个异常
    # 注意语法:raise ErrorClassName
    raise DanaValueError
    print("还没完呀")
except NameError as e:
    print("NameError")
# except DanaValueError as e:
#    print("DanaError")
except ValueError as e:
    print("ValueError")
except Exception as e:
    print("有异常")
finally:
    print("我肯定会被执行的")

Te amo 3.1415926 ValueError Definitivamente seré ejecutado

# else语句案例

try:
    num = int(input("Please input your number:"))
    rst = 100/num
    print("计算结果是:{}".format(rst))
except Exception as e:
    print("Exceptiong")  
 
else:
    print("No Exception")
finally:
    print("反正我会被执行")

Por favor ingrese su número: 0

Excepción

Seré ejecutado de todos modos

Acerca de las excepciones personalizadas

  • Siempre que sea una excepción de aumento, se recomienda una excepción personalizada
  • Al personalizar una excepción, generalmente contiene lo siguiente:
  • Personalice el código de excepción donde ocurre la excepción
  • Personalice la indicación del problema después de que se produzca una excepción
  • Personaliza el número de filas anormales
  • El objetivo final es facilitar que el programador localice rápidamente el sitio del error una vez que se produce una excepción.

Todavía quiero recomendar el grupo de aprendizaje de Python que construí yo mismo : 705933274 , todos los cuales están aprendiendo Python. Si quieren aprender o están aprendiendo Python, pueden unirse. Todos son parte del desarrollo de software y comparten productos secos de de vez en cuando (solo relacionado con el desarrollo de software de Python), incluida una copia de los últimos materiales avanzados de Python y la enseñanza basada en cero compilada por mí en 2021. ¡Bienvenidos amigos que están en un nivel avanzado e interesados ​​en Python para que se unan!

 

Supongo que te gusta

Origin blog.csdn.net/m0_55479420/article/details/114836277
Recomendado
Clasificación