知道代码有错还狂往下写?
最近被 Google 进入中国的消息刷了屏,都在激动,都在吃瓜,百度的老大表示不慌,想要再战一次 Google,非常有信心再赢一次。很多人笑笑不说话。
小帅b期待Google到来,希望可以使用Gmail,使用谷歌地图。。。
再Google快回来之前,给大家介绍篇文章,教你怎么使用 Google 高级搜索技巧压压惊,再也不用担心自己找不到大片了。
戳这里:Google要在中国推出搜索引擎了,给大家讲点 Google 搜索技巧压压惊
接下来进入 Python 正题啦。
知道代码有错还狂往下写?是的没错,就是明明知道可能代码会有错误,但是我们还是往下写。就是这么任性!
1.异常捕获
有时候我们对我们的代码的报错是可预知的,比如我们想让 Python 帮我们打开一个小黄文的文件,比如 yellow.txt,可是我们的电脑不一定有,如果这个时候没有的话我们的代码会报错的对吧?
print('filename:' + document.name)
运行之后可以看到这里报错:
FileNotFoundError: [Errno 2] No such file or directory: 'yellow.txt'
告诉我们没有这个文件。
但是如果这时候我们还想往下运行怎么办呢?
那就可以把这异常给捕获掉,使用 try...except...finally...
try:用来包裹我们可能存在错误的代码;
except:当发现错了就会执行这里
finally:无论怎么样最后都会执行到的。
举个例子你就明白了:
document = open('yellow.txt')
print('filename:' + document.name)
except FileNotFoundError as e:
print("error:" , e)
finally:
print("最后执行的语句")
我们这里打开 yellow.txt ,Python发现不存在,那么就执行except下的语句,finally最后也会被执行:
error: [Errno 2] No such file or directory: 'yellow.txt'
最后执行的语句
那么这样子的话,以后我们就可以将预料到的错误进行捕获,然后对其进行操作。
2.抛出异常
有时候我们没有去处理异常, Python 也会给我们报出错误,这是因为 Python 有个 BaseException 的异常基类,当Python发现我们的代码错误的时候,又没人去处理,它就会层层的往上抛出错误,直到最上级。
我们可以自己定义一个异常类:
pass
def foo(value):
if(value==0):
raise MyError('ERROR %s' % value)
foo(0)
可以看到我们自定义了一个叫做MyError的异常类,继承与Exception,当我们传入 0 的时候就会抛出异常。在这里我们使用到的关键字是raise,就是用来抛出异常的意思。
放个异常让你心情疙瘩一下,哈哈哈:
Traceback (most recent call last):
File "G:/test.py", line 11, in <module>
foo(0)
File "G:/test.py", line 9, in foo
raise MyError('ERROR %s' % value)
__main__.MyError: ERROR 0
ok,有了这两招,妈妈再也不用担心,我错误的代码该如何安放了。对了,时不时后台有朋友找我要微信,还有谁?后台给我发个「1」,我统计一下,看看我下次要不要把微信放出来。
关注我,让你像看小黄文一样轻松学到 Python 的所有!
ps:还没获取我精心准备的 Python 电子书和思维导图等干货的可以在我的公众号「学习Python的正确姿势」中发送 python 免费获取哦!
再ps:说真的,如果你能点个赞转发支持我一下我会更有动力写。
顺手