第九章 异常处理
本章节内容如下:
1、 Python 标准异常总结
2、try-except语句
3、针对不同的异常设置多个except
4、对多个异常统一处理
5、捕获所有异常
6、try-finally语句
7、raise 语句
8、丰富的else
9、简洁的with语句
10、作业
1、 Python 标准异常总结
2、try-except语句

#示例 try: f = open('我为什么是一个文档.txt') #文档不存在时,会报错 print(f.read()) f.close() except OSError: print('文件打开的过程中出错啦T_T')
#使用as把具体错误的信息打印出来 try: f = open('我为什么是一个文档.txt') print(f.read()) f.close() except OSError as reason: print('文件打开的过程中出错啦T_T\n错误原因是:' + str(reason)) """ 文件打开的过程中出错啦T_T 错误原因是:[Errno 2] No such file or directory: '我为什么是一个文档.txt' """
3、针对不同的异常设置多个except
try: sum = 1 + '1' f = open('我是一个不存在的文档.txt') print(f.read()) f.close() except OSError as reason: print('文件出错啦T_T\n错误原因是:' + str(reason)) except TypeError as reason: print('类型出错啦T_T\n错误原因是:' + str(reason))
4、对多个异常统一处理
#except 后面可以跟多个异常,然后对这些异常统一处理 try: int('abc') sum = 1 + '1' f = open('我是一个不存在的文档.txt') print(f.read()) f.close() except (OSError, TypeError): print('出错啦T_T\n错误原因是:' + str(reason))
5、捕获所有异常
try: int('abc') sum = 1 + '1' f = open('我是一个不存在的文档.txt') print(f.read()) f.close() except: print('出错啦') #不建议这么做,因为它会隐藏所有程序员未想到并且未做好处理准备的错误 #另外try语句检测范围内一旦出现异常,剩下的语句不会被执行
6、try-finally语句

try: f = open('我是一个不存在的文档.txt') print(f.read()) sum = 1 + '1' except: print('出错啦') finally: f.close() #都会被执行
7、raise 语句
使用raise 语句 会自动抛出异常
raise ZeroDivisionError """ raise ZeroDivisionError ZeroDivisionError """
8、丰富的else
1、要么怎样,要么不怎样
典型的if -else 搭配 if 条件: 条件为真执行 else: 条件为假执行
2、干完了能怎样,干不完就别想怎样
while -else
def showMaxFactor(num): count = num // 2 while count > 1: if num % count == 0: print('%d最大的约数是%d' % (num, count)) break count -= 1 else: print('%d是素数!' % num) num = int(input('请输入一个数:')) showMaxFactor(num)
for -else
age_of_oldboy = 56 for i in range(3): guess_age = int(input("guess age:") ) if guess_age == age_of_oldboy : print("yes, you got it. ") break elif guess_age > age_of_oldboy: print("think smaller...") else: print("think bigger!") else: print("you have tried too many times..fuck off")
3、没有问题,那就干吧
try: int('abc') except ValueError as reason: print('出错啦:' + str(reason)) else: print('没有任何异常!')
9、简洁的with语句
try: f = open('data.txt', 'w') for each_line in f: print(each_line) except OSError as reason: print('出错啦:' + str(reason)) finally: f.close()
使用with语句可以改成这样的:
try: with open('data.txt', 'w') as f: for each_line in f: print(each_line) except OSError as reason: print('出错啦:' + str(reason))
10、作业
[课后作业] 第032讲:异常处理:你不可能总是对的 | 课后测试题
[课后作业] 第033讲:异常处理:你不可能总是对的2 | 课后测试题
[课后作业] 第034讲:丰富的else语句及简洁的with语句 | 课后测试题
11、扩展阅读

浙公网安备 33010602011771号