El manejo de excepciones
- NameError
- Error de tecleado
- El manejo de excepciones (try ... except)
- Se produce una excepción (aumento)
- finalmente cláusula
Cualquier error que se producen durante la ejecución del programa es anormal . Cada excepción muestra mensajes de error relacionados, tales como el uso python2 único en la sintaxis python3 ocurre SyntaxError
, la primera de varias líneas golpeó accidentalmente un espacio generará IndentationError
.
- NameError
cuándo ocurrirá un acceso NameError variable no definida.
por ejemplo,
>>> print(kushal)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'kushal' is not defined
La última línea contiene los detalles del error, las líneas restantes muestran los detalles de cómo sucedió (o lo que causó la excepción) son.
- TypeError
cuando la operación o el funcionamiento inadecuado aplican al iniciador de tipo de objeto, un ejemplo común es una adición número entero y la cadena son:
>>> print(1 + "kushal")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
- El manejo de excepciones
Utilizar try...except
bloques para procesar cualquier excepción. La sintaxis básica de esta manera:
try:
statements to be inside try clause
statement2
statement3
...
except ExceptionName:
statements to evaluated in case of ExceptionName happens
Funciona de la siguiente manera:
-
En primer lugar, la
try
cláusula (entry
y laexcept
parte entre las palabras clave). -
Si no se produce ninguna excepción, la
except
cláusulatry
se terminó ignorado después de la declaración. -
Si
try
una excepción ocurrió durante la cláusula de ejecución, entonces se ignorará el resto de las cláusulas.
Si la excepción coincide con elexcept
tipo de excepción de palabras clave se especifica, se realiza la correspondienteexcept
cláusula. A continuación, proceder atry
un código después de la declaración. -
Si se produce una excepción, la
except
cláusula de ninguna rama de coincidencia, se pasa a untry
comunicado.
Si usted todavía no puede encontrar el proceso de la sentencia final correspondiente, se trata de una excepción no controlada paradas y ejecución con un mensaje que aparezca.
Las castañas:
>>> def get_number():
... "Returns a float number"
... number = float(input("Enter a float number: "))
... return number
...
>>>
>>> while True:
... try:
... print(get_number())
... except ValueError:
... print("You entered a wrong value.")
...
Enter a float number: 45.0
45.0
Enter a float number: 24,0
You entered a wrong value.
Enter a float number: Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "<stdin>", line 3, in get_number
KeyboardInterrupt
En primer lugar, entré en un valor de coma flotante adecuado, el intérprete devuelve el valor de salida.
Luego, cuando me escriba un valores separados por comas, lanzo ValueError
excepción except
capturas cláusula de, e imprimir un mensaje de error.
Presioné la tercera vez Ctrl + C
, dio lugar a la KeyboardInterrupt
excepción, la excepción no se detecta en el bloque de excepción, por lo que se suspende la ejecución del programa.
Un vacío except
declaración puede capturar cualquier excepción
>>> try:
... input() # 输入的时候按下 Ctrl + C 产生 KeyboardInterrupt
... except:
... print("Unknown Exception")
...
Unknown Exception
- Lanzar una excepción
mediante la instrucción aumento se produce una excepción.
>>> raise ValueError("A value error happened.")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: A value error happened.
Puede capturar anomalías como cualquier otra ordinaria para su captura.
>>> try:
... raise ValueError("A value error happened.")
... except ValueError:
... print("ValueError in our code.")
...
ValueError in our code.
- La definición de la conducta limpieza
try
declaración ha otra opcionalfinally
está destinado cláusula de definir en cualquier caso debe ser ejecutado. Por ejemplo:
>>> try:
... raise KeyboardInterrupt
... finally:
... print('Goodbye, world!')
...
Goodbye, world!
KeyboardInterrupt
Traceback (most recent call last):
File "<stdin>", line 2, in ?
Sea o no se produce una excepción, la finally
cláusula en el programa de licencia try
están seguros de ser ejecutados más tarde. Cuando la try
declaración no está sucediendo except
captura de excepción (o sucede a excepción o cláusula else), en finally
la cláusula después de la aplicación de la misma será re-lanzado.
En unos escenarios de aplicación real, la finally
cláusula es útil para liberar los recursos externos (archivos o conexiones de red y similares), independientemente de si son de mal curso.
Como se mencionó en el with
comunicado, que es try-finally
la abreviatura para el bloque, usando la with
declaración para asegurar el archivo siempre está cerrada.
Lo anomalía? De hecho, una anomalía 类
.
Fuente:
edificio de laboratorios