dukejunior
——未来程式工作室

总结

01、

02、

03、

04、

05、

06、

07、

08、

09、

10、

01、由于逻辑或者主法导致的程序中断叫做异常;异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。异常是 Python 对象,表示一个错误。 当 Python 脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

02、try:可能触发异常的语句块 except [exceptionType]: pass except [exceptionType as data]: 捕获异常并获取异常详细信息 data except: 没有指定异常类型,捕获任意异常 else: 没有触发异常时,执行的诧句块 finally: print("finally")注意:一般底层中的出现列表[]]表明内部的数据可添加可不添加!

03、异常总结(了解一下):AttributeError # 属性引用异常; ImportError # import 错误;NameError # 本地和全局找不到变量名;ConnectionError # 连接;FileExistsError # 创建文件和文件夹错误; FileNotFoundError # 文件未找到;ReferenceError # 引用异常; SyntaxError # 语法错误;SystemError # 解释器中断; TypeError # 类型错误;UnicodeEncodeError # unicode 编码错误;UnicodeDecodeError # unicode 解码错误;UnicodeTranslateError # unicode 转换错误

04、将可能出错的代码放进 try 中,把处理异常的代码放在 except 中。

05、把可能出现问题的代码,放在 try 中; 把处理异常的代码,放在 except 中; 注意:只会抓捕到第一个出错的语句。

06、方法一:指定一个通用异常,在这里我们使用所有的异常的父类 Exception 达到我们想要的结果;try: 语句块 except Exception: 语句块

07、方法二:在 except 使用元组捕获多个异常的方式(注意:这种方法不严谨);

08、方法三:except 子句后不带任何异常名称,捕获所有异常 try: print(a) open('123.txt','r') #有异常但是不知道具体什么异常 except: print('有异常,但是哥就不想打印……')

09、 as 打印详细信息 try: print(a) #NameError 是异常,e 是为了存储异常的详细信息 except NameError as e: print('NameError 的详细信息为%s'%e)

10、 as 处理多个异常详细信息 try: print(a) open('123.txt','r') #NameError, FileNotFoundError 是异常,e 是为了存储异常的详细信息 except (FileNotFoundError ,NameError) as e: print('详细信息为%s'%(e)) 说明:e 相当于异常中的一个对象

11、没有捕获到异常,那么就执行 else 中的事情。try: 需要执行的操作 except 异常类 as e: 如果发生异常,执行以下代码 except 异常类 as f: 如果发生异常,执行以下代码 else: 如果没有发生异常,执行的命令;注意,else 前一定要有 except 否则会出现语法错误

12、try...finally...语句:try: 需要执行的操作 except 异常类 as e: 如果发生异常,执行以下代码 except 异常类 as f: 如果发生异常,执行以下代码 else: 如果没有发生异常,执行的命令 finally: 最终执行的代码;不管 try 语句有没有执行成功,都会执行 finally 当中的代码逻辑。

13、触发异常raise [Exception [, args [, traceback]]]Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供 的异常参数。 最后一个参数是可选的(在实践中很少使用)跟踪异常对象(了解一下);抛出异常后,raise 后面的代码不在执行,为了能够捕获异常,"except"语句必须用相同的异 常来抛出类对象或者字符串

14、#自定义一个异常 MyException,继承 Exception class MyException(Exception): #重写父类的__init__方法 def __init__(self,num,atleast): #调用父类的__init__ super().__init__() self.num = num self.atleast = atleast class Test(object): def start(self): try: content = int(input('请输入数字:')) if content < 5: #抛出自定义异常,相当亍创建一个实例对象 raise MyException(content,3) #相当亍创建这个对象赋值给 s except MyException as s: print('当前大小:%s,最少的数字:%s'%(s.num,s.atleast)) else: print('输入的结果符合要求') t = Test() t.start()

15、 super().__init__()的说明 这一行代码,可以调用也可以不调用,建议调用,因为__init__方法往往是用来对创建完的对象进 行初始化工作,如果在子类中重写了父类的__init__方法,即意味着父类中的很多初始化工作没有做, 这样就不保证程序的稳定了,所以在以后的开发中,如果重写了父类的__init__方法,最好是先调用父 类的这个方法,然后再添加自己的功能。

16、在工作中我们时常要定义自己异常,减少程序的耦合性,简单来说,为了处理各模块之间的依赖性问 题,提高重用。

17、try 的嵌套使用:import time try: f = open('123.txt',encoding='utf-8') try: while True: #自动打印三行 for i in range(3): print(f.readline()) #睡两秒 time.sleep(2) #再读一行 content = f.readline() #打印 print(content) #如果我们读取的内容 0 则 break if len(content) == 0: break #无论如何都要关闭文件 finally: f.close() except: print('没有这个文件')

18、函数嵌套调用: def test01(): print('----start----') print(num) def test02(): print('----end----') def test03(): try: print('----test03----') test01() except Exception as result: print('捕获异常:%s'%result) test03()

posted on 2019-10-29 17:02  公爵二世  阅读(81)  评论(0)    收藏  举报