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
- Ejecute la siguiente declaración intente
- Si ocurre una excepción, busque la excepción correspondiente en la declaración except y manejela
- Si no hay excepción, ejecute el contenido de la instrucción else
- 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!