预备小菜Python入门之异常

在之前的示例中遇见了多次Error,就是异常,这种场景还是经常存在的,比如说读取字典中不存在的key,打开一个本地文件,可是这个文件却不存在,代码就会报出异常,进而停止运行,接下来我们认识一下异常和了解怎么处理异常。认识异常在认识异常之前,先需要认识一下什么是

在之前的示例中遇见了多次Error,就是异常,这种场景还是经常存在的,比如说读取字典中不存在的key,打开一个本地文件,可是这个文件却不存在,代码就会报出异常,进而停止运行,接下来我们认识一下异常和了解怎么处理异常。

认识异常

在认识异常之前,先需要认识一下什么是错误。错误是我们在编写代码过程中不符合语言规范的写法,通常IDE都会有这样的错误提示,即便是没有运行之后就看见熟悉的提示:SyntaxError: invalid syntax,这就是语法错误。错误是在代码运行前就可以排查的,而异常是不能预见到的,在计算过程中出现的错误。

Python中,是用异常对象(Exception object)来表示异常情况。记得之前提到的,在Python中一切皆对象,异常也不例外。而且在Python中有很强大的异常处理能力,内置了很多异常类型,能准备的向用户反映错误信息,常见的错误异常类型如下表所示。

异常类型

异常问题

Exception

错误对象的基类

IOError

输入或者输出错误

KeyError

映射中没有此键

MemoryError

内存溢出

RuntimeError

运行错误

TypeError

类型无效的操作

IndexError

序列中没有此索引

UnicodeError

与Unicode相关的错误

IndentationError

缩进错误

AttributeError

对象没有此属性

ImportError

导入模块错误

OSError

操作系统错误

FileexistsError

创建已经存在的目录/文件

FileNotFoundError

文件不存在

除了错误还有一些内容是警告(Warning),警告并不会造成代码的停止运行。很多时候程序员只关心错误,并不是关心警告。

异常处理

处理异常使用try/except语句。try/except语句中如果try中的代码块出现异常,except中的会捕捉异常信息并处理。即在try代码中出现异常,程序也不会因此停止。以下就是try/except的使用语法:

try:       
  # 执行代码    
except 异常类型: #可以添加多个except ,捕捉多种异常        
  # 执行代码

上面提到Exception是异常的基类,也就是所有的异常类型都可以使用Exception来处理,可以说是万能异常处理方法。

它的优点就是使用一段代码逻辑就可以处理异常。缺点就是不能分类区别,如果想对不同的异常做分别不同的处理,那么需要使用多个分支异常来处理。通常情况下,我们还是会在最后使用Exception来处理未知的异常,那些可以预料到的异常,使用明确的异常类型和对应的处理方法。

在异常中也有可以使用try… else的语句,当try的代码中没有报出异常,会执行else中的代码,使用语法如下:

try:     
 # 执行代码   
except 异常类型:
 # 执行代码
else:     
 print('这段代码没有异常')

当然也有try… finally的语句,这跟else不同的是,在finally下的代码块,不管有没有出异常都被执行。使用语法如下:

try:      
 # 执行代码    
except 异常类型:
 # 执行代码
finally:     
 print('执行finally内容')

通常在finally中会做一些日志处理或者释放资源的工作。异常在后续的数据采集,尤其是爬虫中,很多时候由于网络或者对方服务器的原因,某一次请求失败了,因为没有完整的数据,后续的代码无法完成,如果没有异常处理,程序会直接停止,而我们希望是一次两次的请求失败,并不影响后续的请求,所以使用try except语句,将异常捕捉,然后跳过继续执行后续代码。例如下面代码所示:

创建文件夹

def newFolder(folder_name):    
    isExists = os.path.exists(folder_name)     
    if not isExists:                 
       try:
           os.mkdir(folder_name) 
       except Exception:
           pass

当我们的目的只是为了出现错误的时候,不影响后续代码的运行,那么我们就选择使用Exception,毕竟不关心到底发生了什么错误,通常数据采集过程中,不可能所有的请求都处理成功,存在异常是一件正常的事情。

创业项目群,学习操作 18个小项目,添加 微信:niuben22  备注:小项目

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.35chat.cn/48998.html