https://blog.csdn.net/qq_35831906/category_12375510.html?spm=1001.2014.3001.5482
Tabla de contenido
Una solución y un tipo de excepción comunes de Python
Dos declaraciones comunes de manejo de excepciones
1 intento... excepto declaración
2 intente... excepto... declaración else
3 intentar... excepto... finalmente declaración
4 Use la declaración de aumento para lanzar una excepción
5 tipos de excepción personalizados
Procesamiento de cadena de 6 excepciones
Guía de columna
Este artículo está incluido en la columna "Competente en Python en 100 días" . Esta columna está dirigida a usuarios principiantes y avanzados. El sistema capta rápidamente los conceptos básicos y las habilidades prácticas del lenguaje de programación Python, y domina la sintaxis básica, los tipos de datos , funciones, módulos y programación orientada a objetos de Python. ¡Espere el conocimiento clave y luego profundice en el combate real del proyecto y use python para resolver problemas prácticos!
¡Explore el encanto de Python y domine el mundo de la programación! ¡Vamos!
Dirección de suscripción de columna: https://blog.csdn.net/qq_35831906/category_12375510.html
En Python, una excepción es un error o una condición inesperada que ocurre mientras se ejecuta el programa y evita que el programa continúe normalmente. Python proporciona un conjunto de clases de excepción integradas para representar diferentes tipos de errores. Cuando ocurren excepciones en el programa, estas excepciones pueden ser capturadas y procesadas a través del mecanismo de manejo de excepciones, para manejar correctamente la situación de error.
Una solución y un tipo de excepción comunes de Python
En Python, hay muchos tipos de excepciones integrados que se usan para representar diferentes errores o condiciones excepcionales.
Exception es la clase base de todas las excepciones integradas, y todas las clases de excepción en Python heredan de la clase Exception. Cuando ocurre una excepción en el programa, se lanzará el objeto de excepción correspondiente.Si estas excepciones no se manejan, el programa terminará la ejecución.
Tipos de excepciones comunes y soluciones en python:
1.SyntaxError
: Errores de sintaxis, generalmente causados por errores de escritura en el código, como errores tipográficos, falta de dos puntos, etc.Solución: revise el código cuidadosamente para asegurarse de que la sintaxis sea correcta.
2.IndentationError
: Errores de sangrado, generalmente causados por un código mal sangrado.Solución: Verifique si la sangría del código es correcta, se recomienda usar 4 espacios como sangría.
3.NameError
: Mal nombre, generalmente causado por el uso de una variable o nombre de función indefinidos.Solución alternativa: asegúrese de que los nombres de variables y funciones estén definidos correctamente o antes de su uso.
4.TypeError
: error de tipo, generalmente causado por el uso de un tipo de datos incorrecto.Solución: Confirme si los tipos de datos coinciden. De lo contrario, intente realizar la conversión de tipos o utilice el tipo de datos correcto.
5.ValueError
: error de valor, generalmente causado por el uso de un valor ilegal.Solución: Confirme si el rango de valores de los datos es correcto y asegúrese de que se utilicen los valores legales.
6.ZeroDivisionError
: Error de división por cero, generalmente causado por una división por cero en una operación de división.Solución: asegúrese de que el divisor no sea cero, y puede realizar el manejo de excepciones cuando el divisor sea cero para evitar bloqueos del programa.
7.IndexError
: Error de índice, generalmente causado por el uso de un índice que excede el rango de la secuencia.Solución: confirme si el valor del índice está dentro del rango de la secuencia y asegúrese de que no exceda la longitud de la secuencia.
8.KeyError
: Error de clave, generalmente causado por el uso de una clave que no existe.Solución alternativa: asegúrese de que la clave existe en el diccionario, puede usar
in
la palabra clave para verificar si existe una clave.
9.FileNotFoundError
: El archivo no existe, generalmente causado al intentar abrir un archivo que no existe.Solución: compruebe si la ruta del archivo es correcta y asegúrese de que el archivo existe.
10.ImportError
: Error de importación, generalmente causado por un problema al importar un módulo o paquete.Solución: confirme si la ruta del módulo o paquete es correcta y asegúrese de que el módulo existe.
11. IOError (error de entrada y salida): esta excepción se lanza cuando ocurre un problema relacionado con la entrada y salida de archivos.
Solución: asegúrese de que los permisos de acceso a los archivos sean correctos y compruebe si hay otros problemas relacionados con la entrada y salida de archivos.
12.AttributeError (Error de atributo): esta excepción se lanza cuando se usa un atributo o método que no existe.
Solución: asegúrese de que la propiedad o el método existan en el objeto, o que el objeto esté correctamente inicializado antes de acceder a la propiedad o llamar al método.
RuntimeError
: error de tiempo de ejecución, que generalmente se lanza como una clase base porque no se puede clasificar en otro tipo de excepción.
La forma general de manejar las excepciones es usar
try...except
sentencias. Ejecute el código que puede generar una excepción entry
el bloque y, si ocurre una excepción, saltará alexcept
bloque para manejar la excepción. Al detectar y manejar las excepciones, se pueden evitar los bloqueos del programa y se puede aumentar la solidez y la tolerancia a fallas del programa.
Dos declaraciones comunes de manejo de excepciones
Exception es la clase base de todas las excepciones integradas, y todas las clases de excepción en Python heredan de la clase Exception. Cuando ocurre una excepción en el programa, se lanzará el objeto de excepción correspondiente.Si estas excepciones no se manejan, el programa terminará la ejecución. Para resolver la excepción, podemos tomar el siguiente enfoque:
1 intento... excepto declaración
Use una instrucción try...except en un bloque de código que podría generar una excepción para capturar y manejar la excepción. Coloque el código que podría generar una excepción en un bloque de prueba y, si se produce una excepción, maneje la excepción en un bloque de excepción.
Ejemplo 1: capturar tipos de excepción específicos
try:
num1 = int(input("请输入一个整数: "))
num2 = int(input("请输入另一个整数: "))
result = num1 / num2
print("结果:", result)
except ValueError:
print("请输入有效的整数值!")
except ZeroDivisionError:
print("除数不能为零!")
En el ejemplo anterior, estamos tratando de convertir la cadena ingresada por el usuario en un número entero y hacer la división. Si el usuario ingresa algo que no es un número entero válido, ValueError
se genera una excepción y se imprime un mensaje de error apropiado. Si el divisor es cero, ZeroDivisionError
se genera una excepción y se imprime un mensaje de error apropiado.
Ejemplo 2: capturar todas las excepciones
try:
num = int(input("请输入一个整数: "))
result = 10 / num
print("结果:", result)
except Exception as e:
print("发生了异常:", e)
En este ejemplo, tratamos de convertir la cadena ingresada por el usuario en un número entero y usarla como divisor para la división. Independientemente del tipo de excepción que ocurra, except Exception
la instrucción detectará y controlará la excepción y asignará el objeto de excepción a la variable e
. Luego, imprimimos el mensaje de excepción.
Ejemplo 3: capturar múltiples tipos de excepción
try:
file = open("nonexistent.txt", "r")
content = file.read()
file.close()
print("文件内容:", content)
except FileNotFoundError:
print("文件不存在!")
except PermissionError:
print("没有文件访问权限!")
except Exception as e:
print("发生了异常:", e)
En el ejemplo anterior, intentamos abrir un archivo que no existe y leer su contenido. Se lanza una excepción si el archivo no existe FileNotFoundError
, se lanza una excepción si no hay permisos suficientes para acceder al archivo PermissionError
. Usamos varias except
declaraciones para capturar diferentes tipos de excepciones e imprimir los mensajes de error correspondientes. Si se produce cualquier otro tipo de excepción, except Exception
la declaración la detectará y se imprimirá el mensaje de excepción.
2 intente... excepto... declaración else
Además de capturar excepciones, también puede agregar un bloque else en la declaración try...except para manejar la situación cuando no hay excepción.
Nos permite intentar ejecutar un bloque de código que podría generar una excepción, y si ocurre una excepción, podemos except
manejar el caso excepcional en el bloque y else
el caso de ejecución normal en el bloque.
La estructura gramatical es la siguiente:
try:
# 可能引发异常的代码块
except ExceptionType:
# 处理指定类型的异常
else:
# 没有异常时执行的代码块
Ejemplo 1:
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
print("Error: Division by zero!")
else:
print(f"The result of {x} divided by {y} is {result}")
divide(10, 2) # Output: The result of 10 divided by 2 is 5.0
divide(10, 0) # Output: Error: Division by zero!
Ejemplo 2;
try:
num1 = int(input("请输入一个整数: "))
num2 = int(input("请输入另一个整数: "))
result = num1 / num2
except ValueError:
print("请输入有效的整数值!")
except ZeroDivisionError:
print("除数不能为零!")
else:
print("结果:", result)
En este ejemplo, dividimos dos enteros ingresados por el usuario. Si la entrada del usuario no es un entero válido,
ValueError
se lanzará una excepción; si el divisor es cero,ZeroDivisionError
se lanzará una excepción. Si no ocurre ninguna excepción,else
el resultado se imprimirá en el bloque.Independientemente de si es
except
un bloque oelse
un bloque, como máximo se ejecutará un bloque.except
Si ocurre una excepción, se ejecutará el bloque correspondiente ; si no ocurre ninguna excepción,else
se ejecutará el bloque.Otro: el bloque de excepción en la declaración try-except-else es opcional, puede optar por usar solo bloques de prueba y más, o agregar varios bloques de excepción para detectar diferentes tipos de excepciones
3 intentar... excepto... finalmente declaración
El bloque finalmente se puede agregar en la declaración try...except, y el código en el bloque finalmente se ejecutará independientemente de si se produce una excepción. Se utiliza para capturar y manejar las excepciones que pueden ocurrir y para ejecutar algún bloque de código independientemente de si ocurre una excepción o no.
try
Un bloque contiene código que puede generar una excepción,except
un bloque se usa para manejar una excepción yfinally
el código dentro del bloque siempre se ejecuta, ya sea que ocurra una excepción o no.
Las siguientes son try...except...finally
explicaciones detalladas y ejemplos de las declaraciones:
try
Bloque: contiene código que puede generar una excepción.
except
Bloques: se utilizan para capturar y manejar excepciones. Cuandotry
ocurre una excepción dentro de un bloque, el programa saltatry
el código restante del bloque y ejecutaexcept
el código dentro del bloque. Puede usarloexcept
seguido de un tipo de excepción específico para manejar un tipo específico de excepción, o puede usarloexcept
sin ningún tipo de excepción para manejar todas las excepciones.
finally
Bloque: el código contenido siempre se ejecuta independientemente de si se produce una excepción. Independientemente de si se produce una excepción,finally
el código del bloque se ejecutará para garantizar que se realice el trabajo de limpieza necesario cuando se produzca una excepción.
Aquí hay un ejemplo simple que demuestra try...except...finally
el uso de la declaración:
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
print("除数不能为零!")
result = None
finally:
print("执行finally块!")
return result
# 调用函数
print(divide(10, 2)) # 输出: 5.0
print(divide(10, 0)) # 输出: 除数不能为零! 执行finally块! None
En el ejemplo anterior, definimos una
divide
función que toma dos argumentosx
ey
intentax
dividir pory
. Si esy
cero,ZeroDivisionError
se activará una excepción. Entry
el bloque, intentamos realizar la operación de división y, si ocurre una excepción,except
se ejecuta el código del bloque para imprimir el mensaje de error.finally
El código del bloque se ejecutará tanto si se produce una excepción como si no .Nota:
finally
El código en el bloque es opcional y se puede omitir y no usar. Entry...except
una estructura,try
los bloques son obligatorios, mientras queexcept
los bloques yfinally
los bloques son opcionales.
4 Use la declaración de aumento para lanzar una excepción
En Python, raise
las excepciones se pueden lanzar manualmente usando la declaración. raise
Las declaraciones le permiten generar excepciones activamente en puntos específicos de su código, lo que permite el manejo de errores si es necesario.
raise
La sintaxis general de la sentencia es la siguiente:
raise [ExceptionType[(args)]]
Entre ellos, ExceptionType
se encuentra el tipo de excepción, que puede ser un tipo de excepción integrado (como ValueError
, TypeError
etc.) o un tipo de excepción personalizado. args
es un parámetro opcional para proporcionar información adicional sobre la excepción.
Aquí hay un raise
ejemplo del uso de una declaración para lanzar una excepción:
def divide(x, y):
if y == 0:
raise ValueError("除数不能为零!")
return x / y
try:
result = divide(10, 0)
print(result)
except ValueError as e:
print("发生异常:", e)
En el ejemplo anterior, definimos una
divide
función que toma dos parámetrosx
yy
. Si esy
cero, usamosraise
la declaración para lanzar unaValueError
excepción con un mensaje de error "¡el divisor no puede ser cero!". Llame atry
la función en el bloque y capture y maneje la excepción lanzada en el bloque.divide
except
Resultado de salida:
发生异常: 除数不能为零!
Mediante el uso
raise
de declaraciones, puede generar excepciones de manera proactiva cuando sea necesario y realizar el manejo de excepciones cuando corresponda. Esto puede mejorar la legibilidad y la solidez del código, haciendo que el manejo de errores sea más flexible y preciso.
5 tipos de excepción personalizados
Si necesita manejar un tipo específico de excepción, puede personalizar la clase de excepción y lanzar esa excepción cuando sea necesario.
class MyError(Exception):
def __init__(self, message):
self.message = message
try:
raise MyError("自定义异常")
except MyError as e:
print("捕获自定义异常:", e.message)
Procesamiento de cadena de 6 excepciones
Si la excepción no se puede manejar en la ubicación actual, la excepción se puede pasar a la función de llamada de la capa superior para su procesamiento, formando una cadena de excepción.
def func():
try:
result = 10 / 0
except ZeroDivisionError as e:
raise MyError("发生异常:") from e
try:
func()
except MyError as e:
print("捕获异常链:", e)
Estos métodos anteriores pueden ayudarnos a manejar y resolver excepciones y garantizar la estabilidad y confiabilidad del programa. Sin embargo, se debe tener en cuenta que el manejo de excepciones se debe usar de manera razonable y evitar el uso excesivo de las sentencias try...except El manejo de excepciones se debe realizar de acuerdo con la situación específica para mantener el código claro y legible.
Excepciones y depuración del programa PythonSiguiente: [100 días de competencia en python] Día 18: Excepciones y depuración del programa Python_Métodos y habilidades comunes de depuración del programa, cómo separar el código de depuración del código oficial_Blog de LeapMay-Blog de CSDN