学堂 学堂 学堂公众号手机端

Python:异常处理机制和常见异常类型

lewis 6年前 (2019-07-14) 阅读数 9 #技术
Python的异常处理机制

处理异常的几种代码结构:

try...except...else结构

如果try代码块内没有抛出异常,执行else代码块,否则执行except代码块。

graph TD
    A(try) -->|程序发生异常|B(except)
    A(try) -->|程序没有异常|C(else)
try:
    n1 = int(input('请输入一个整数:'))
    n2 = int(input('请输入另一个整数:'))
    result = n1 / n2
except BaseException as e:
    print('代码出错')
    print(e)
else:
    print('结果为:', result)
try...except...else...finally结构

如果try代码块内没有抛出异常,执行else代码块,否则执行except代码块。finally代码块无论是否发生异常都会执行,常用来释放try块中申请的资源。


graph TD
    A(try) -->|程序发生异常|B(except)
    A(try) -->|程序没有异常|C(else)
    B --> D{finally}
    C -->D{finally}
try:
    n1 = int(input('请输入一个整数:'))
    n2 = int(input('请输入另一个整数:'))
    result = n1 / n2
except BaseException as e:
    print('代码出错')
    print(e)
else:
    print('结果为:', result)
finally:
    print('任何情况都会执行')
print('程序结束')

运行结果:

请输入一个整数:1
请输入另一个整数:4
结果为: 0.25
任何情况都会执行
程序结束traceback模块

使用traceback模块打印异常信息

import traceback

try:
    print('1.------------------')
    num = 10/0
except:
    traceback.print_exc()

输出结果:

Traceback (most recent call last):
File "D:\study\python-study\chap8\traceback.py", line 5, in <module>
num = 10/0
ZeroDivisionError: division by zeroPython中常见的异常类型异常类型简述ZeroDivisionError除(或取模)0(所有数据类型)IndexError序列中找不到该索引KeyError映射中找不到该键NameError未声明/初始化对象(没有属性)SyntaxError语法错误ValueError传入无效的参数
版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门