查看原文
其他

知道代码有错还狂往下写?

小帅b 学习python的正确姿势 2019-04-06

最近被 Google 进入中国的消息刷了屏,都在激动,都在吃瓜,百度的老大表示不慌,想要再战一次 Google,非常有信心再赢一次。很多人笑笑不说话。




 之前怎么赢的心里还没有点b数么?


小帅b期待Google到来,希望可以使用Gmail,使用谷歌地图。。。


再Google快回来之前,给大家介绍篇文章,教你怎么使用 Google 高级搜索技巧压压惊,再也不用担心自己找不到大片了。


戳这里:Google要在中国推出搜索引擎了,给大家讲点 Google 搜索技巧压压惊



接下来进入 Python 正题啦。


知道代码有错还狂往下写?是的没错,就是明明知道可能代码会有错误,但是我们还是往下写。就是这么任性!


 有点狂啊~


1.异常捕获


有时候我们对我们的代码的报错是可预知的,比如我们想让 Python 帮我们打开一个小黄文的文件,比如 yellow.txt,可是我们的电脑不一定有,如果这个时候没有的话我们的代码会报错的对吧?


document = open('yellow.txt')
print('filename:' + document.name)


运行之后可以看到这里报错:


FileNotFoundError: [Errno 2] No such file or directory: 'yellow.txt'


告诉我们没有这个文件。


但是如果这时候我们还想往下运行怎么办呢?


那就可以把这异常给捕获掉,使用 try...except...finally...


try:用来包裹我们可能存在错误的代码;

except:当发现错了就会执行这里

finally:无论怎么样最后都会执行到的。


举个例子你就明白了:


try:
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发现我们的代码错误的时候,又没人去处理,它就会层层的往上抛出错误,直到最上级。


我们可以自己定义一个异常类:


class MyError(Exception):
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:说真的,如果你能点个赞转发支持我一下我会更有动力写。



                            顺手,点个赞吧



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存