异常的传递
1. try嵌套中的:
import time try: f = open("test.txt") try: while True: content = f.readline() if len(content) == 0: break time.sleep(2) print(content) except: #如果在读取文件的过程中,产生了异常,那么就会捕获到 pass finally: f.close() print("关闭文件") except: print("没有这个文件")
2.函数嵌套调用中
运行结果:
抛出自定义的异常
可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类 下面是一个引发异常的例子:
引发异常的句子的源代码:
class ShortInputException(Exception): def __init__(self, length, atleast): self.length = length self.atleast = atleast def main(): try: s = input('请输入 --> ') if len(s) < 3: # raise引发一个你定义的异常 raise ShortInputException(len(s), 3) except ShortInputException as result:#x这个变量被绑定到了错误的实例 print('ShortInputException: 输入的长度是 %d,长度至少应是 %d'% (result.length, result.atleast)) else: print('没有异常发生.') main()
当程序出错时,python会自动触发异常,也可以通过raise显示引发异常一旦执行了raise语句,raise之后的语句不在执行 如果加入了try,except,那么except里的语句会被执行