except和raise语句
except和raise语句是Python中两种异常处理方式。在Python程序中,代码可能会因为各种原因导致错误或异常情况的出现,比如语法错误、运行时错误和逻辑错误等等。为了避免程序崩溃,Python提供了异常处理机制,通过使用except和raise语句可以在程序出现错误或异常情况时,捕捉并处理异常,使程序可以继续执行或者更加友好的提示用户错误的原因。
1. except语句
当程序运行过程中出现异常时,Python会在异常发生的位置中断程序,并且根据异常类型来选取相应的错误处理方法来继续执行程序。这个异常处理的方法就是通过使用try-except语句块来实现的。try语句块中的代码在程序运行时会被执行,如果其中出现了异常就会跳转到except语句块中的代码块执行。
语法结构为:
try:
# try suite
except ExceptionName:
# except suite
else:
# else suite
finally:
# finally suite
其中,try代码块中的语句会被逐行执行,如果其中发生了异常,则会跳转到except语句块中执行。except 语句支持多个异常类型的捕获,如果有多个except代码块,程序会按照顺序逐个匹配异常类型。如果没有匹配到任何一个except语句块,程序将会停止执行,异常信息会被打印到控制台。
除了捕获特定的异常类型之外,还可以使用通用的Exception捕获所有类型的异常,这样可以在程序出现任何异常的时候进行捕获并处理,保证程序的健壮性。例如:
try:
# ...
except Exception as e:
# 处理异常
其中,e是捕获到的异常实例。可以通过这个变量对象来获取异常信息。
除了except语句块之外,还有else和finally语句块。else语句块中的代码只在try语句块中没有出现异常的情况下才会执行,而finally语句块中的代码始终会被执行,不管try语句块中是否出现异常。
2. raise语句
在Python中,raise语句用于抛出一个自定义的异常。当程序中出现了预期之外的异常情况时,可以使用raise语句来强制触发一个指定的异常,以中断当前执行的代码块并且将控制权传回到调用者。
例子:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class MyException(Exception):
def __init__(self,value):
self.value = value
def __str__(self):
return repr(self.value)
try:
raise MyException('我的异常测试')
except MyException as e:
print('My Exception:', e.value)
输出为:
My Exception: '我的异常测试'
在这个例子中,我们自定义了一个MyException异常类,并且在try语句块中使用raise抛出了这个异常,最后在except语句块中处理了这个异常。
总结:
Python中的except和raise语句都是异常处理的重要部分,可以帮助程序避免崩溃,保证程序的正常执行。在代码编写过程中,正确地使用这些语句可以显著提高程序的健壮性,减少出现异常情况的概率。同时,我们需要注意异常处理的代码 不要影响程序的正常运行,也就是说捕捉到异常并处理之后,程序可以继续执行,或者给出相应的提示和建议。
