Python 异常处理
在Python中,异常处理非常重要。在程序运行时可能会出现很多种错误,有些错误是我们能够预见的,比如除以0的错误,有些错误是我们无法预见的,比如获取一个不存在的文件。无论是哪种错误,都有可能导致程序的崩溃。
为了避免这种情况发生,我们需要对可能出现的异常进行捕获和处理。
Python 异常的捕获
Python的异常处理方式与其他语言有所不同,它使用了try
和except
来进行异常的捕获。
基本的语法格式
try:
# 可能会出现异常的代码块
except [异常类型]:
# 异常处理块
上述语法格式中,try
代码块中的语句将被执行。如果出现异常,则会跳过try
代码块,而直接执行except
代码块,执行完except
代码块后,程序会继续执行后面的代码。
例子1
try:
num = 1/0
except ZeroDivisionError:
print("除数不能为0")
上述代码中,我们在try代码块中尝试除以0,从而导致了ZeroDivisionError
异常的发生。在except
块中,我们捕获了该异常,并输出了相应的错误信息。
例子2
try:
f = open('file.txt')
s = f.readline()
i = int(s.strip())
except (IOError, ValueError) as e:
print("出现错误:%s" % e)
finally:
f.close()
在上述代码中,我们试图打开一个不存在的文件,并读取其中的一行,最后将其转化为int类型。由于文件不存在,我们会捕获IOError
异常,而由于读取的字符串并不是一个有效的数字,我们也会捕获ValueError
异常,这样的话,我们可以在except
块中输出相应的错误信息。
Python 异常的传递
在Python中,异常还可以通过抛出和捕获操作来进行传递。
raise语句
使用raise
语句可以抛出一个指定的异常,一旦抛出,程序会立即停止执行,并且转到最近的try
块中进行处理。
try:
raise Exception("抛出异常")
except Exception as e:
print(e)
在上述代码中,我们使用raise
语句抛出了一个异常,该异常会被try
块中的except
块捕获,并输出了相应的错误信息。
Python 主动抛出异常操作示例
常见异常类型
在Python中,有很多内置的异常类型,常见的有:
Exception
:所有异常的基类StopIteration
:在迭代器完成所有的后续操作后停止迭代的异常SystemExit
:直接退出程序的异常KeyboardInterrupt
:由Ctrl-C或Delete键触发的异常IndexError
:下标越界异常KeyError
:字典中不存在的key异常NameError
:使用不存在的声明变量的异常OSError
:操作系统相关的异常IOError
:操作输入输出时的异常TypeError
:类型有误异常等等
例子
x = int(input("请输入一个正整数:"))
if x <= 0:
raise ValueError("输入错误:输入的数字必须是正整数")
else:
print("输入的数字为:%d" % x)
在上述代码中,我们通过判断输入的数字是不是正整数来决定是否抛出ValueError
异常,从而可以通过抛出异常来优雅地处理这种情况。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 异常的捕获、异常的传递与主动抛出异常操作示例 - Python技术站