1. 异常介绍
程序中如果出现异常错误会导致程序崩溃,而Python允许程序员处理这些异常错误,保证程序正常运行。Python中内置了很多异常,如:
ZeroDivisionError: 除数为0
SyntaxError: 语法错误
NameError: 未声明/初始化就使用变量
IndexError: 列表下标越界
TypeError: 类型错误
ValueError: 值错误
FileNotFoundError: 打开不存在的文件
有了异常处理,Python程序可以更好的处理错误,而不是让程序直接出错崩溃。
2. try-except语句
Python中内置的异常可以通过try-except语句来处理:
try:
# 可能会出现异常的代码
except exception as e:
# 异常处理代码
try语句中包含可能会出现异常的代码,except语句用来处理try语句中出现的异常。如果try语句中没有出现异常,except语句中的代码将不会执行。
在except语句中,exception可以是任意的异常,也可以通过使用多个except语句来分别处理多个异常。例如:
try:
# 可能会出现异常的代码
except ZeroDivisionError as e:
print('除数不能为0')
except NameError as e:
print('变量未定义')
except Exception as e:
print('其他错误')
上述代码会先处理ZeroDivisionError异常,然后处理NameError异常,最后处理其他异常。如果try语句中出现了ZeroDivisionError或NameError异常,则except语句中对应的代码会执行,否则执行其他异常的处理。
3. try-except-else语句
除了try-except语句,还可以使用try-except-else语句:
try:
# 可能会出现异常的代码
except exception as e:
# 异常处理代码
else:
# 没有出现异常时执行的代码
try语句中包含可能会出现异常的代码,except语句用来处理try语句中出现的异常,else语句用来处理try语句中没有出现的异常。如果try语句中没有出现异常,则else语句中的代码会执行。
4. try-except-finally语句
还可以使用try-except-finally语句:
try:
# 可能会出现异常的代码
except exception as e:
# 异常处理代码
finally:
# 无论是否出现异常都会执行的代码
try语句中包含可能会出现异常的代码,except语句用来处理try语句中出现的异常,finally语句用来处理无论是否出现异常都需要执行的代码。
4.1 finally与return的关系
在函数中使用try-except-finally语句,finally中的语句总是会被执行。不过,finally中的语句可能会影响return语句。
def test():
try:
print('try')
return True
except:
print('except')
finally:
print('finally')
test()
上述代码中,finally中的print语句也会被执行,输出结果为:
try
finally
True
在这个例子里,try语句中的return语句会让函数直接返回值True。由于finally语句总是会被执行,所以finally中的代码也会被执行。但是,对结果没有影响,函数返回值依旧为True。
但是如果finally中有return语句,结果就会不同:
def test():
try:
print('try')
return True
except:
print('except')
finally:
print('finally')
return False
test()
上述代码中,在finally语句中增加了一个return语句。结果输出为:
try
finally
False
可以看到,虽然try语句中的return语句返回了True,但是由于finally语句中的return语句,函数最终返回值变为了False。
5. raise语句
除了try-except语句,还可以使用raise语句来引发异常:
```
raise exception('message')
```
raise语句用来引发异常,exception表示要引发的异常类型,message表示异常信息。
5.1 自定义异常
Python中允许定义自己的异常:
class MyException(Exception):
def __init__(self, message):
self.message = message
try:
raise MyException('自定义异常')
except MyException as e:
print(e.message)
上述代码定义了一个名为MyException的异常,然后使用raise语句来引发异常,并在except语句中处理异常。输出结果为:
```
自定义异常
```
到此为止,关于Python的错误异常的解决方法已经介绍完毕。在程序开发中,异常处理是很重要的一部分,通过合理地使用异常,可以提高程序的健壮性,避免程序意外崩溃。因此,异常处理是每一个Python程序员都需要掌握的一项技能。