python异常处理中不会用到的关键字是_Python异常处理(Python学习笔记05)

异常处理

异常处理是编写代码必须要完成的内容,对于不符合预期的用户操作或数据输入,程序总是会出现异常情况,而对异常情况能够妥善处理,是保证程序稳定性的关键工作之一。

异常出现的原因非常多,逻辑错误、用户输入错误都会造成异常。

例如:

filename = input("Enter file path:")f = open(filename)print(f.read())这个简单的程序中,open() 函数打开文件,read() 函数读取文件内容。

首先 input() 函数会读取用户的输入作为文件的路径,如果哟弄个和输入的文件不存在:

u=806060160,1194242184&fm=173&app=49&f=JPEG?w=640&h=148&s=5AE5A144CFA4B370545EF185020030C9

会出现文件不存在的异常,并且会发现 Traceback,这就是系统抛出的异常,异常的类型是 FileNotFoundError。

Python 常用的异常类有很多,常见的异常类:

NameError 范文一个未定义的变量SyntaxError 语法错误,这个严格将算是程序的错误IndexError 对于一个序列,访问的索引超过了序列的范围,可以理解为我的序列里只有三个元素,但要访问第4个KeyError 访问一个不存在的字典Key,Key如果不存在字典就会抛出这个异常ValueError 传入无效的参数AttributeError 访问类对象中不存在的属性异常处理方式

如果出现了异常,不可以直接将异常抛给用户,应该使用Python提供的异常处理方法来捕获并处理异常,处理方法为使用try, except和finally 三个关键字。

代码格式如下:

try: 有可能抛出异常的代码except 异常类型名称: 处理代码except 异常类型名称: 处理代码这里的 except 可以有多个,每个处理不同类型的异常,也可以不写任何异常类型名称,则会处理所有捕获的异常。

如果我们需要获得异常的具体信息,可以写成 except FileNotFoundError as err: 这种形式,err为异常对象,可以通过这个对象获取更详细的异常信息。

改进的文件读取程序为:

filanem = input("Enter file path: ")try: f = open(filename) print(f.read()) f.close()except FileNotFoundError as err: print("Error: {0}".format(err))当try 代码块中一旦出现异常,这个代码块后续的代码不会继续执行,会直接进入到except异常处理代码块中。

finally 关键字是用来进行清理工作,经常和 except 一起使用,即无论是正常还是异常,这段代码都会执行。

如果一个文件处理的程序中异常出现在 f.write() 向文件中写入数据的时候,就无法执行 close操作,使用 finally 可以保证无论 try 代码块中的代码是否抛出异常,都能够执行 finally 代码块中的内容,保证文件被正常关闭。

修改上述的代码,改为写入操作,引入 finally 保证文件可以被正常关闭:

filename = '/etc/protocols'f = open(filename)try: f.write('hello world')except: print("File write error")finally: print("Finally") f.close()抛出异常

如果希望在程序执行过程中抛出一些异常,可以使用 raise 语句。

raise 异常名称例如,在代码里希望抛出一个 ValueError, 直接使用:

raise ValueError()外部的代码就可以使用 except ValueError 进行捕获和处理了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值