当前位置: 首页 > 后端技术 > Python

干燥!一张图整理了Python的所有内置异常

时间:2023-03-26 14:30:37 Python

在写程序的时候,可能会经常报一些异常。一方面是因为你自己的疏忽导致程序给出了错误信息。另一方面,一些异常是程序运行时不可避免的。比如在爬取的时候,可能会出现几个结构不一致的网页。这时候,同一套代码就会导致两种结构的网页出错。因此,我们需要捕获发生的异常,以防止程序出现错误信息。并终止操作。Python有很多内置的异常,这意味着Python的开发者已经提前考虑到用户编程过程中可能会出现此类错误,所以这些内置的异常可以快速准确的向用户反馈错误信息,帮助查找代码中的bug.Python官方文档中也给出了所有内置的异常和触发条件。为了更好的阅读体验,我将所有的异常和触发条件整理成一张思维导图:文末附上高清版的获取方式。小伙伴们可以直接去文末拍照哦。下面分别介绍几种常见的异常,通过实例来深入了解在什么情况下会触发哪种异常。1.SyntaxErrorSyntaxError主要是Python语法错误,比如少了冒号,多引号等,编程稍有疏忽就会出错。应该是最常见的异常错误了。In[1]:WhileTrueprint('1')File"",line1WhileTrueprint('1')^SyntaxError:invalidsyntax2,TypeErrorTypeError是类型错误,即可以说当操作或函数应用于不适当类型的对象时引发,例如从字符中添加或减去整数,在两个列表之间进行减法等。在[8]中:a=[1,2];b=[2,3]在[9]中:a-b-----------------------------------------------------------------------TypeErrorTraceback(mostrecentcalllast)in---->1a-bTypeError:unsupportedoperandtype(s)for-:'list'and'list'3、IndexErrorIndexError是索引错误。例如,最常见的下标索引超出了序列边界。例如,当序列m只有三个元素时,它会尝试访问m[4]。在[16]中:m=[1,2,3]在[17]中:m[4]----------------------------------------------------------------------IndexErrorTraceback(mostrecentcalllast)in---->1m[4]IndexError:listindexoutofrange4,KeyErrorKeyError是关键字错误,这个异常主要出现在字典中,例如当用户试图访问字典中不存在的键时。In[18]:dict_={'1':'yi','2':'er'}In[19]:dict_['3']------------------------------------------------------------------------KeyErrorTraceback(mostrecentcalllast)in---->1dict_['3']KeyError:'3'5、ValueErrorValueError是一个值错误,当用户传入一个调用者不期望的值时引发,即使该值是正确的类型,例如试图获取一个不存在的值的索引列表。在[22]中:n=[1,2,3]在[23]中:n.index(4)----------------------------------------------------------------------ValueErrorTraceback(mostrecentcalllast)in---->1n.index(4)ValueError:4isnotinlist6,AttributeErrorAttributeError是一个属性错误,当用户尝试访问对象的某个属性不存在时会抛出该异常。例如,列表有索引方法,而字典没有,因此在字典对象上调用此方法会导致此异常。In[25]:dict_={'1':'yi','2':'er'}In[26]:dict_.index('1')--------------------------------------------------------------------AttributeErrorTraceback(最近调用last)in---->1dict_.index('1')AttributeError:'dict'objecthasnoattribute'index'7、NameErrorNameError是变量名错误,比如当用户试图调用一个还没有被赋值或者初始化的变量时,就会被触发。在[27]中:print(list_)----------------------------------------------------------------------NameErrorTraceback(最近一次调用last)in---->1print(list_)NameError:name'list_'isnotdefined8、FileNotFoundErrorFileNotFoundError是打开文件错误,当用户试图以读模式打开一个不存在的文件时触发。在[29]中:fb=open('./list','r')----------------------------------------------------------------------FileNotFoundErrorTraceback(最近调用last)in---->1fb=open('./list','r')FileNotFoundError:[Errno2]Nosuchfileordirectory:'./list'9,StopIterationStopIteration是迭代器错误。当迭代器的最后一个值仍然被访问时,会触发这个异常,提醒用户迭代器中没有值可以访问。在[30]:list1=[1,2]在[31]:list2=iter(list1)在[33]:next(list2)Out[33]:1In[34]:next(list2)Out[34]:2In[35]:next(list2)-----------------------------------------------------------------------StopIterationTraceback(最近调用最后)in---->1next(list2)10.AssertionErrorAssertionError是断言错误。当用户使用断言语句检测异常时,如果断言语句检测到的表达式为假,则触发该异常。在[45]中:list3=[1,2]在[46]中:assertlen(list3)>2-----------------------------------------------------------------------AssertionErrorTraceback(mostrecentcalllast)in---->1assertlen(list3)>2AssertionError:以上异常应该是正常编程遇到频率比较高的部分,完整最重要的还是看上面的思维导图或者查阅官方文档。当然,除此之外,Python还支持用户根据自己的需要自定义异常,在此不再赘述。Python也有比较强大的异常处理功能,比如捕获异常,主动抛出异常等,主要有以下几种方式:1.try...except结构语句捕获2.try...except...finally结构语句捕获3.try...except...else结构语句捕获4.raise关键字主动抛出异常5.try...raise...except触发异常6.assert断言语句7.traceback模块跟踪查看异常除了下载的思维导图,还有网络版的思维导图。我是用百度脑图画的。如果您认为地图有任何不合理的地方,您可以在网页在线编辑上上传。获取方式:公众号【奶糖猫】后台回复关键字“变态”。