Python -> (6) Notas de aprendizaje

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.

  1. 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.

  1. 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'
  1. El manejo de excepciones

Utilizar try...exceptbloques 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:

  1. En primer lugar, la trycláusula (en tryy la exceptparte entre las palabras clave).

  2. Si no se produce ninguna excepción, la exceptcláusula tryse terminó ignorado después de la declaración.

  3. Si tryuna 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 el excepttipo de excepción de palabras clave se especifica, se realiza la correspondiente exceptcláusula. A continuación, proceder a tryun código después de la declaración.

  4. Si se produce una excepción, la exceptcláusula de ninguna rama de coincidencia, se pasa a un trycomunicado.
    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 ValueErrorexcepción exceptcapturas cláusula de, e imprimir un mensaje de error.

Presioné la tercera vez Ctrl + C, dio lugar a la KeyboardInterruptexcepció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 exceptdeclaración puede capturar cualquier excepción

>>> try:
...     input() # 输入的时候按下 Ctrl + C 产生 KeyboardInterrupt
... except:
...     print("Unknown Exception")
...
Unknown Exception
  1. 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.
  1. La definición de la conducta limpieza
    try declaración ha otra opcional finallyestá 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 finallycláusula en el programa de licencia tryestán seguros de ser ejecutados más tarde. Cuando la trydeclaración no está sucediendo exceptcaptura de excepción (o sucede a excepción o cláusula else), en finallyla cláusula después de la aplicación de la misma será re-lanzado.

En unos escenarios de aplicación real, la finallyclá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 withcomunicado, que es try-finallyla abreviatura para el bloque, usando la withdeclaración para asegurar el archivo siempre está cerrada.

Lo anomalía? De hecho, una anomalía .

Fuente:
edificio de laboratorios

Publicado 33 artículos originales · ganado elogios 1 · vistas 1251

Supongo que te gusta

Origin blog.csdn.net/weixin_44783002/article/details/104582010
Recomendado
Clasificación