关键词不能为空

当前您在: 主页 > 高中公式大全 >

经典卡通电影python异常处理学习

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-17 06:32
tags:

beard的意思-累了

2021年1月17日发(作者:尚钺)
python
异常处理(基础)

2014-01-13 22:57 by
虫师
, 16151
阅读
, 4
评论
,
收藏
,
编辑







之前在学习
python
的时候有整理过
python
异 常处理的文章,
不够简单也不够完整,所
以决定再整理一篇,算做补充。


/fnng/archive/2013/04/28/




python shell

>>> open('','r')
Traceback (most recent call last):


File
IOError: [Errno 2] No such file or directory: ''



打开一个不存在的文件

文件,
当系统找不到

文件时,
就会抛出给我们一

IOError
类型的错误,
No such file or directory


(没有

这样的文件或目录)





Try...except...






假如,我们已经知道这种类型的错误,那么就可以通过一个 异常扑捉来扑捉这个错误。
我们可以通过
try...except
来接收这个错误。打开文件写入:


try:




open(
except IOError:




pass





再来运行程序就会看不到任何错误,
因为我们用
except
接收了这个
IOError
错误。
pass
表示实现了相应的实现,但什么也不做。




假如我不是打开一个文件,而是输出一个没有定义的变量呢?



try:




print

aa
except IOError:




pass


显然,在上面的代码中我并没有对
aa
赋值,运行结果:


Traceback (most recent call last):


File




print

aa
NameError: name 'aa' is not defined



我们已经用
except
接收错误了,为什么错误还是还是抛出来了。如果你细心会发现这
一次的错误类型是
Name Error

而我接收类型是
IOError

所以要想接收这 个
print
的错误,
那么需要修改接收错误的类型为
NameError



虽然,
我知道
print
语句是可能会抛一个
NameError
类型的错误,
虽然接收了这个类型
错误,
但我不知道具体的错误提示信息是什么。
那么,
我能不能把错误信息打 印出来呢?当
然可以:


try:




print

aa
except

NameError, msg:




print

msg



我们在接收错误类型的后面定义一个变量
msg
用于接收具体错误信息
,
然后将
msg

收的错误信息打印。再来运行程序:


name 'aa' is not defined

现在只打印了一行具体错误信息。






异常的抛出机制:


1
、如果在运行时发生异常,解释器会查找相 应的处理语句(称为
handler

.

2
、要是在当 前函数里没有找到的话,它会将异常传递给上层的调用函数,看看那里能不能
处理。


3

如果在最外层
(全局

main


还是没有找到的话,
解释器就会退出,
同时打印出
traceback
以便让用户找到错误产生的原因。





注意:虽然大多数错误会导致异常,
但一个异常不一定代表错误,
有时候它们只是一个警告,有时候它们可能是一个终止信号,比如退出循环等。








try...finally...




try...finally...
子句用来表达这样的情况:


我们不管线捕捉到的是什么错误,无论错误是不是发生,这些代码“必须”运行,比如文件
关闭 ,释放锁,把数据库连接返还给连接池等。



创建文件



复制代码


import time

try:




f = file('')




while True: # our usual file- reading idiom








line = ne()








if len(line) == 0:












break








(2)








print line,


finally:




()




print 'Cleaning up...closed the file'

复制代码


运行程序
(

windows
命令提示符或
li nux
终端下运行
)


复制代码


...$$ python

abc
efg
^CCleaning up...closed the file
Traceback (most recent call last):


File




(2)
KeyboardInterrupt

复制代码




程序读

文件中每一行数 据打印,但是我有意在每打印一行之前用

方法暂停
2
秒钟。这样做的原因是让 程序运行得慢一些。在程序运行的时候,按
Ctrl-c
中断
/
取消程序。< br>



我们可以观察到
KeyboardInterrup t
异常被触发,
程序退出。
但是在程序退出之前,
finally
从 句仍然被执行,把文件关闭。








到目前为止,我们只讨论了如何捕捉异常,那么如何抛出异常呢?





Raise
抛出异常





使用
raise
来抛出一个异常:




#coding=utf-8
filename = raw_input('please input file name:')

if filename=='hello':




raise NameError('input file name error !')



程序要求用户输入一个文件名,如果用户输入的文件名是
hello
,那么抛出一个
NameError
的异常,用户输入
hello

NameError
异常之间没有任何必然联系,我只是人为
的通过
rai se
来这样定义,我当然也可以定义称
TypeError
,但我定义的异常类型必须是
python
提供的。





附录:


常见的
python
异常类型


/library/#bltin-exceptions



从 几年前开始学习编程直到现在,
一直对程序中的异常处理怀有恐惧和排斥心理。
之所以这
样,是因为不了解。这次攻
python
,首先把自己最畏惧和最不熟悉的几块内容列出来, 里
面就有「异常处理」这一项。



Dive into Pyt hon
》并没有专门介绍异常处理,只是例子中用到的时候略微说明了一下。今
天下载《
Learn Python

,直接进异常处理这块。这一部分有四章,第一章讲解异常处理 的一
般使用方法,后面的章节深入地讨论其机制。
我目前只看了第一章,先学会用,以后有必要
的时候再扩展阅读。


python
主要支持五种异常机制,一一列举。


默认的异常处理器


复制代码

代码如下
:

s = 'Hello girl!'
print s[100]
print 'continue'

如果我们没有对异常进行任何预防,
那么在程序执行的过程中发生异常,
就会中断程序,


python
默认的异常处理器,
并在终端输出异常信息。
这种情况下,

3
行 代码不会执行。

beard的意思-累了


beard的意思-累了


beard的意思-累了


beard的意思-累了


beard的意思-累了


beard的意思-累了


beard的意思-累了


beard的意思-累了



本文更新与2021-01-17 06:32,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/522660.html

python异常处理学习的相关文章