>>> # try-except语句 >>> >>> # try : >>> # 检测范围 >>> # except Exception[as reason]: >>> # 出现异常(Exception)后的处理代码 >>>
>>> try : file = open("我是一个你找不到的文件.txt") print(file.read()) file.close() # 下面的reason是一个变量,名称可以随意的 except OSError as reason: print('文件出错啦!\n具体原因是:'+str(reason)) 文件出错啦! 具体原因是:[Errno 2] No such file or directory: '我是一个你找不到的文件.txt' >>> >>> # try 后面可以跟多个except语句块 >>> >>> try : num = 1+' file = open("我是一个你找不到的文件.txt") print(file.read()) file.close() except OSError as reason: print('文件出错啦!\n具体原因是:'+str(reason)) except TypeError as reason: print('类型出错!\n具体原因是:'+str(reason)) 类型出错! 具体原因是:unsupported operand type(s) for +: 'int' and 'str' >>> >>> # 也可以将几个异常一起处理 >>> try : num = 1+' file = open("我是一个你找不到的文件.txt") print(file.read()) file.close() # 下面的reason是一个变量,名称可以随意的 except (OSError,TypeError )as reason: print('出错;!\n具体原因是:'+str(reason)) 出错;! 具体原因是:unsupported operand type(s) for +: 'int' and 'str' >>> # 当try语句块中某一行出错时,直接到except块中进行捕获,后面的代码不在被执行 >>> # try后面不根任何异常名称,将会捕获所有的异常 >>> >>> try : int('ab') num = 1+' file = open("我是一个你找不到的文件.txt") print(file.read()) file.close() # 下面的reason是一个变量,名称可以随意的 except (OSError,TypeError )as reason: print('出错;!\n具体原因是:'+str(reason)) except : print('出错') 出错
>>> >>> # try-finally语句 >>> # >>> # try : >>> # 检测范围 >>> # except Exception[as reason]: >>> # 出现异常(Exception)后的处理代码 >>> # finally : >>> # 无论如何都会执行的代码 >>> >>> try : file = open("我是一个你找不到的文件.txt",'w') print(file.write('我存在了')) #这里出错,文件还没有关闭,写入的内容就不会到文件中去 num = 1+' except (OSError,TypeError )as reason: print('出错;!\n具体原因是:'+str(reason)) finally : file.close() 4 出错;! 具体原因是:unsupported operand type(s) for +: 'int' and 'str'
>>> >>> # 手动抛出一个异常 raise >>> raise Traceback (most recent call last): File "<pyshell#67>", line 1, in <module> raise RuntimeError: No active exception to reraise >>> raise ValueError('不能处理的值') Traceback (most recent call last): File "<pyshell#68>", line 1, in <module> raise ValueError('不能处理的值') ValueError: 不能处理的值 >>>
#丰富的else
>>> #1, 要么怎样,要么不怎样 if else 的用法 不再赘述
>>> #2, 干完了能怎样,干不完别想怎样 与while for搭配使用
>>> #3, 没有问题,那就干吧 与异常处理机制搭配
>>>
>>> # else 只在循环正常完成之后执行,如果是从break中跳出来的就不会被执行
>>>
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)
============== RESTART: C:/Users/Administrator/Desktop/else.py ============== 请输入一个数字:12 12最大公约数是6 >>> ============== RESTART: C:/Users/Administrator/Desktop/else.py ============== 请输入一个数字:7 7是素数!
>>># try 语句块中没有任何异常才执行else,否则不执行
try : int (') except ValueError as reason: print('出错了:'+str(reason)) else: print('没有任何异常1')
# Python使用with语句,可以省去关闭文件,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 file: for each_line in file: print(each_line) except OSError as reason: print('出错啦:'+str(reason))