首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python学习笔记(八)——错误、调试、测试

ZeroDivisionError as e: print('except:', e) finally: print('finally...') print('END') 当我们认为某些代码可能会出错时...调用堆栈 如果错误没有被捕获,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出。...记录错误 如果不捕获错误,自然可以让Python解释器来打印出错误堆栈,但程序也被结束了。既然我们能捕获错误,就可以把错误堆栈打印出来,然后分析错误原因,同时,让程序继续执行下去。...try: bar('0') except Exception as e: logging.exception(e) 同样是出错,但程序打印完错误信息后会继续执行,...断言会抛出KeyError: with self.assertRaises(KeyError): value = d['empty'] 运行单元测试 一旦编写好单元测试,我们就可以运行单元测试。

78220

有史以来最全的异常类讲解没有之一!第二部分爆肝2万字,终于把Python的异常类写完了!最全Python异常类合集和案例演示,第二部分

KeyError KeyError 是 Python 中的一个标准异常类型,它会在你尝试访问字典中不存在的键时引发。这个异常表明你尝试获取的键在字典的键集合中不存在。...print(“捕获到KeyError异常:”, e):打印捕获到的 KeyError 异常的信息,包括具体的键 ‘address’。...在实际开发中,当处理字典时,应该始终注意键的存在性,以避免引发 KeyError 异常。...由于 KeyError 异常被 except KeyError as e: 块捕获,程序将不会崩溃,而是打印出错误信息 “捕获到KeyError异常: ‘address’”。...except MemoryError as e: 块将捕获该异常,并打印出错误信息 “捕获到MemoryError异常:系统内存不足”。

10710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Day13错误、调试和测试

    END 当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句块...如果没有错误发生,可以在except语句块后面加一个else,当没有错误发生时,会自动执行else语句: try: print('try...')...END Python的错误其实也是class,所有的错误类型都继承自BaseException,所以在使用except时需要注意的是,它不但捕获该类型的错误,还把其子类也“一网打尽”。...,这是错误产生的源头, 3 4 def bar(s): 5 return foo(s) * 2 # 因为下面打印了: ZeroDivisionError:...每个测试方法调用前后会打印出setUp...和tearDown...。

    82390

    #21 Python异常

    打印出来 3 4 print(age) # 将变量age打印出来,并没有初始化age,会抛出变量错误异常 5 6 # 运行结果: 7 MinuteSheep # 正确打印出name...并没有终止程序,而是执行出现异常时的代码块 从上面的代码可以看到,当开始执行一个try语句时,Python将会在当前程序的上下文做标记,当异常出现时,返回这里,执行异常时的代码块,当然也可以捕捉多个异常...: 10 print('我是KeyError') 11 12 13 # 运行结果: 14 MinuteSheep 15 我是NameError 长上面代码可以看出,当有多个except语句时...映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError...有这么一句话:与其让程序在运行时出错,不如让其出现错误条件时出错。

    1K20

    Python学习笔记(八)·错误、调试和测试

    比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。...or modulo by zero 根据错误类型ZeroDivisionError,我们判断,int(s)本身并没有出错,但是int(s)返回0,在计算10 / 0时出错,至此,找到错误源头。...> 出错的时候,一定要分析错误的调用栈信息,才能定位错误的位置。 8.1.3 记录错误 如果不捕获错误,自然可以让Python解释器来打印出错误堆栈,但程序也被结束了。...出错时,会分析错误信息并定位错误发生的代码位置才是最关键的。 程序也可以主动抛出错误,让调用者来处理相应的错误。但是,应该在文档中写清楚可能会抛出哪些错误,以及错误产生的原因。...断言会抛出KeyError: with self.assertRaises(KeyError): value = d['empty'] 而通过d.empty访问不存在的key时,我们期待抛出AttributeError

    1.3K30

    12 Python 基础: 如何优化代码质量,错误、调试和测试你必须要懂.md

    比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。...or modulo by zero 根据错误类型ZeroDivisionError,我们判断,int(s)本身并没有出错,但是int(s)返回0,在计算10 / 0时出错,至此,找到错误源头。...记录错误 如果不捕获错误,自然可以让Python解释器来打印出错误堆栈,但程序也被结束了。既然我们能捕获错误,就可以把错误堆栈打印出来,然后分析错误原因,同时,让程序继续执行下去。...出错时,会分析错误信息并定位错误发生的代码位置才是最关键的。 程序也可以主动抛出错误,让调用者来处理相应的错误。但是,应该在文档中写清楚可能会抛出哪些错误,以及错误产生的原因。...断言会抛出KeyError: with self.assertRaises(KeyError): value = d['empty'] 而通过d.empty访问不存在的key时,我们期待抛出AttributeError

    1.3K30

    11 . Python3之异常,调试和测试

    UnicodeEncodeError Unicode 编码时错误 UnicodeTranslateError Unicode 转换时错误 Warning 警告的基类 DeprecationWarning...AGE = 10 while True: age=input('>>: ').strip() if age.isdigit(): # 只有在age为字符串形式的整数时,下列代码才不会出错...会导致你的代码可读性变差 然后异常处理本就不是你2b逻辑的擦屁股纸,只有在错误发生的条件无法预知的情况下,才应该加上try…except 记录错误 如果不捕获错误,自然可以让Python解释器来打印出错误堆栈...,但程序也就结束了,既然我们能捕获错误,就可以把错误堆栈打印出来,然后分析错误原因,同时让程序继续执行下去....,但程序打印完错误信息后会继续执行,并正常退出. # 通过配置,logging还可以把错误记录到日志文件里,方便事后排查.

    1.4K40

    学习笔记-小甲鱼Python3学习第三十

    请输入一个数:')) showMaxFactory(num) 会的,如果将else语句与循环语句(for或while语句)搭配,那么只有在循环正常执行完成后才会执行else语句块的内容 2.请目测以下代码会打印什么内容...try:     print('ABC') except:     print('DEF') else:     print('GHI') finally:     print('JKL') 打印结果:...name = input('请输入联系人姓名:')         try:             print(name + ':' + contacts[name])         except KeyError...('是否修改用户资料(YES/NO):') == 'YES':                 contacts[name] = input('请输入用户联系电话:')         except KeyError...请输入联系人姓名:')         try:             contacts.pop(name)             print('联系人%s已删除' %name)         except KeyError

    59610

    包教包会!7段代码带你玩转Python条件语句(附代码)

    无默认值 运行try-except-else语句时,程序首先执行try代码块,即可能出错的试探性语句,这可能导致致命性错误使得程序无法继续执行。...如果try部分无法执行,也没有找到相应的except代码块,就将异常消息发送给程序调用端,如Python Shell,Python Shell对异常消息的默认处理则是终止程序的执行并打印具体的出错信息,...这也是在Python Shell中执行程序错误后所出现的出错打印信息的由来。...这一异常准确地说应属于KeyError,但由于KeyError是LookupError的子类,且在代码清单⑥中将LookupError置于KeyError之前,因此程序优先执行该except代码块。...使用该语句引发异常时,只需在raise后输入异常名即可,如代码清单⑦所示。

    1.9K30

    Python 编程 | 连载 18 - 异常处理

    111) print(res_01) res_02 = upper('hello') print(res_02) 错误代码后面的代码无论正确与否一旦出现异常,程序就会终止,这个时候就需要对这段可能会出错的代码进行异常处理...res_01 = divid(1, 0) print(res_01) res_02 = divid(10, 2) print(res_02) 不使用try-except异常处理,执行函数,查看控制台打印出的具体异常...def divid(x, y): res = x / y return res 可以看出控制塔打印的异常为 “ZeroDivisionError: division by zero...0 try: res = x / y except IndexError as e: print(e) return res 程序运行还是出错...AttributeError 对象不含指定属性时出现的异常 IOError IO流输入输出时出现的异常 KeyError 没有指定的键时出现的异常 NameError 指定变量不存在时出现的异常 SyntaxError

    62430

    python『学习之路-Base_Last』异常

    name'] # 表示尝试处理这段代码,如果处理失败,则运行下一部分: names[3] open("tes.txt") a = 1 print(a) except KeyError...尝试处理代码失败,捕捉失败原因: 尝试执行代码失败, 'name' except IndexError as e: print("索引越界异常: ",e) # 尝试执行try中两部分代码,如果谁中有异常,就打印谁中的信息...3] # data['name'] # open("tes.txt") # except Exception as e: # ---- >> 一般不用 # print("程序出错...: ",e) # 程序出错: list index out of range ---- >>此种处理异常的方式就是无法判断到底是哪里出的错 # 自定义异常: class QuanqException...>>继承自基类exception def __init__(self,message): self.message = message # 初始化错误信息 --- >>促发异常时,

    23930

    包教包会,7段代码带你玩转Python条件语句

    无默认值 运行try-except-else语句时,程序首先执行try代码块,即可能出错的试探性语句,这可能导致致命性错误使得程序无法继续执行;如果try代码块确实无法执行,就可能执行某个except代码块...如果try部分无法执行,也没有找到相应的except代码块,就将异常消息发送给程序调用端,如Python Shell,Python Shell对异常消息的默认处理则是终止程序的执行并打印具体的出错信息。...这也是在Python Shell中执行程序错误后所出现的出错打印信息的由来。 在try语句中,except与else代码块都是可选的。except代码块可以有0或多个;else代码块可以有0或1个。...这一异常准确地说应属于KeyError,但由于KeyError是LookupError的子类,且在代码清单⑥中将LookupError置于KeyError之前,因此程序优先执行该except代码块。...使用该语句引发异常时,只需在raise后输入异常名即可,如代码清单⑦所示。

    2.5K10

    关于Python异常处理,你需要了解的知识点

    如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层,并打印缺省的出错信息。...可能触发异常的语句块 except: # 后面跟一个错误类型,当代码发生错误且错误类型符合的时候,就会执行except中的代码,不写具体错误类型,表示接收任何类型的异常 # 这里执行异常处理的相关代码,打印输出等...•代码逻辑相关,比如越界访问、KeyError 等。...映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) UnboundLocalError 访问未初始化的本地变量...UnicodeEncodeError Unicode 编码时错误 UnicodeTranslateError Unicode 转换时错误 Warning 警告的基类 DeprecationWarning

    1.4K61

    调用企业微信API发送文本,图片,文件消息

    1.调用api向企业微信(通过CORPID标识)的自建应用程序(通过Secret, AgentID标识)发送文本、图片或者文件消息; 2.创建实例时传入以下参数: (1) touser–>str,接收消息者的标识...已在企业微信的通讯录中添加,添加后微信后台会自动分配标识),多个用户使用 “|” 隔开(如”zhdb|zhj|wqq”),所有人(“@all”); (2) corp_id–>str,企业ID,申请企业微信时获得...'rb')) 另外也经常有这种情况,调用其它图片生成库在线绘制的图形可先存入到二进制缓存文件中,再将该对象作为file_obj参数传入, 例如用发送用matplotlib所生成的图片: import matplotlib.pyplot...: # 成功返回后就会获得'access_token'字段,否则报错KeyError raise KeyError("Get access-token failed.") def _get_media_id...: # 成功返回后就会获得'media_id'字段,否则报错KeyError raise KeyError("Get media_id failed.") def _gen_msg(self, msg_type

    3.4K10

    有史以来最全的异常类讲解没有之一!爆肝3万字,终于把Python的异常类写完了!最全Python异常类合集和案例演示,第一部分

    第二个调用 divide_numbers(10, 0) 尝试除以零,捕获到 ZeroDivisionError 异常,打印出错误信息,并返回 None。同时,finally块中的代码也被执行。...KeyError 通常发生在尝试从字典中获取不存在的键时,而 IndexError 则发生在尝试访问列表、元组或其他序列类型的索引超出范围时。...异常 address = my_dict['address'] except KeyError as e: # 捕获KeyError异常并打印错误信息...except KeyError as e: 捕获 KeyError 异常,并将其异常对象赋值给变量 e,然后打印错误信息。 my_list = [1, 2, 3] 创建了一个包含三个元素的列表。...except KeyError as e: 块捕获了该异常,并打印了错误信息 “捕获到KeyError异常: ‘address’”。

    15810

    python3异常可直接抛出_python自定义异常

    当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 python学习网,大量的免费python视频教程,欢迎在线学习!...# IOError I/O操作引发的异常,如打开文件出错等 # KeyError 使用字典中不存在的关键字引发的异常 # NameError 使用不存在的变量名引发的异常 # TabError 语句块缩进不正确引发的异常...如果你不想在异常发生时结束你的程序,只需在try里捕获它。...如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。...不管在try有无异常抛出时都会执行本级try对应的finally。

    53080

    Python面向对象7:异常处理

    无法引入模块或包;基本上是路径问题或名称错误 IndentationError 语法错误(的子类);代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError...就让其抛出不做处理,就可以只处理"except ZeroDivisionError",比如: 2)完整异常流程:try...except...else...finally 在try里面写正常的代码,如果出错...,则捕获错误信息,交给except 在except中写出错的处理流程,可以写各种不同类型的错误,捕获的时候最好是具体的错误在前,其他的错误在后 else,如果不变成执行 finally,无论是否出错,均会执行...执行结果: 3)主动抛出异常: 主动抛出异常 try: raiseException('主动错误抛出异常') exceptExceptionasex:#Exception会捕获错误 print(ex)#打印错误

    77480

    python中--try except 异常捕获以及正则化、替换异常值

    映射中没有这个键 MemoryError 内存溢出错误(对于Python解释器不是致命的) NameError 未声明/初始化对象(没有属性) ReferenceError 弱引用(Weakreference...一般的解释器系统错误 TypeError 对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode相关的错误 UnicodeDecodeError Unicode解码时的错误...UnicodeEncodeError Unicode编码时错误 UnicodeTranslateError Unicode转换时错误 Warning 警告的基类 DeprecationWarning...) as e: print(e) except Exception as e: print(e) else: #没有异常出错,走else...GaoError as e: print(e) 触发自定义异常: 2.7 断言 断言被用作你接下来的程序执行,如果后面程序依赖于前面的程序,后面的程序有很重要,就是后面的程序执行肯定不能出错

    1.1K10
    领券