Mecanismo de manejo de excepciones de Python

1. ¿Qué es anormal?

Una excepción es una señal de que se ha producido un error en el programa, y ​​se generará una excepción una vez que el programa falle

Tres características del manejo de excepciones.

Anormal información de seguimiento
tipo anormal de
anormalidad del contenido

Dos por qué lidiar con excepciones

Para mejorar la robustez del programa, incluso si se produce un error durante la ejecución del programa, no finalice el programa, pero tome la excepción y trátela: registre la información del error en el registro

Tres cómo lidiar con las excepciones

1. Errores de sintaxis

Método de procesamiento uno: debe corregirse antes de que se ejecute el programa

if 1>3
     print("run...")

2. Errores lógicos

print(x)
l=['a','b']
l[2]

1/0

int('abc')

dic={'name':'egon'}
dic['age']
class Foo:
    pass

Foo.x

3. Hay dos formas de lidiar con excepciones lógicas

1. Las condiciones bajo las cuales ocurre el error son predecibles, utilícelas si juzga para resolver

age=input('>>: ').strip() # 输入的只要不是数字就会出错
if age.isdigit():
    age=int(age)
    if age > 18:
        print('猜大了')
    elif age < 18:
        print('猜大了')
    else:
        print('猜对了')
else:
    print('必须输入数字')

2. Las condiciones bajo las cuales ocurre el error son impredecibles

print('start...')
try:
    # 有可能会抛出异常的代码
    子代码1
    子代码2
    子代码3
except 异常类型1 as e:
    pass
except 异常类型2 as e:
    pass
...
else:
    如果被检测的子代码块没有异常发生,则会执行else的子代码
finally:
    无论被检测的子代码块有无异常发生,都会执行finally的子代码

print('end...')

Uso uno:

print('start...')

try:
    print('1111111111')
    l=['aaa','bbbb']
    l[3] # 抛出异常IndexError后,该行代码同级别的后续代码不会运行
    print('2222222222')
    xxx
    print('33333333')
    dic={'a':1}
    dic['a']
except IndexError as e:
    print('异常的信息: ',e)

print('end....')

#结果展示
'''
start...
1111111111
异常的信息:  list index out of range
end....
'''

Uso dos:

try:
    print('1111111111')
    l=['aaa','bbbb']
    # l[3] # 抛出异常IndexError,该行代码同级别的后续代码不会运行
    print('2222222222')
    xxx
    print('33333333')
    dic={'a':1}
    dic['a']
except IndexError as e:
    print('异常的信息: ',e)
except NameError as e:
    print('异常的信息: ',e)

print('end....')

#结果展示
'''
1111111111
2222222222
异常的信息:  name 'xxx' is not defined
end....
'''

Uso tres:

try:
    print('1111111111')
    l=['aaa','bbbb']
    # l[3] # 抛出异常IndexError,该行代码同级别的后续代码不会运行
    print('2222222222')
    xxx
    print('33333333')
    dic={'a':1}
    dic['a']
# except IndexError as e: #异常信息
#     print('异常的信息: ',e)
# except NameError as e:
#     print('异常的信息: ',e)
except Exception as e:
    print('所有异常都可以匹配到')

print('end....')

#结果展示
'''
1111111111
2222222222
所有异常都可以匹配到
end....
'''

Uso cuatro: de lo contrario no se puede usar solo con try, se debe usar con excepto

print('start...')

try:
    print('1111111111')
    print('2222222222')
    # xxxx
    print('33333333')
except Exception as e:  # 万能异常
    print('所有异常都可以匹配的到')
else:  #当不发生异常时执行
    print('====>')

print('end....')

Uso cinco: finalmente se puede usar solo con try

Finalmente: no maneja excepciones, no importa si ocurre una excepción, finalmente ejecutará el subcódigo

El código para reclamar recursos del sistema generalmente se coloca aquí, de modo que, independientemente de si el programa encuentra un error y se detiene, puede reciclar los recursos del sistema.

print('start...')

try:
    print('1111111111')
    l = ['aaa', 'bbbb']
    l[3] # 抛出异常IndexError,该行代码同级别的后续代码不会运行
    print('2222222222')
    xxx
    print('33333333')
    dic = {'a': 1}
    dic['aaa']
finally: # 不处理异常,无论是否发生异常都会执行finally的子代码
    print('====》》》》》应该把被检测代码中回收系统资源的代码放到这里')

print('end....')

Supongo que te gusta

Origin www.cnblogs.com/xy-han/p/12716035.html
Recomendado
Clasificación