python3 try语句相关 (try/except/else/finally)

1、try - except

作用: 捕获程序在执行时遇到的异常情况,即一些报错。什么啥玩意儿没定义啊,符号又错了啊之类的你懂得。

意义: 因为程序在发现某个错误时,往往会中断不再向下执行,如下例子说明问题:

很明显,我们并没有定义b,  就将它赋值给a,现在我们运行如下:

不出所料提示NameError,发现错误就报错,不再执行下面的程序。

现在我们用try/except写一下:

打印:

我们从这个例子可以试着去推测这段代码的执行过程:

(1)先执行try代码块, 发现了错误

(2)执行except代码块。

(3)程序向下执行。

可能有疑问try block发现异常前后正常的的部分会被执行吗,可以测试一下:

打印:

结论:

(1)先执行try block, 直到发现了错误,不再执行异常之后的代码

(2)执行except block.

(3)向下继续。

现在已经对try/excepy有了感性的了解,接下来拓展它的用法

简单来说,在try/except语句中,可以用多个except.

例子:

这里使用了两个except,可以发现except 后面跟了SyntaxError,NameError, 这个我们经常见过的两个系统报错,当然这里可以改成任何系统错误(参见python标准异常)。执行:

可见,当try代码块执行出现异常,在except中匹配到了NameError的异常,则执行了对应except的语句。

新的疑问,若所有except都没有匹配呢,测试如下:

我们将NameErro改成了SystemExit,打印:

发现又回到了开始,说明这样的try/except等于是废的。。。

所以避免没有匹配到异常,又中断程序,将代码修改如下:

即又加了一条except,这条except后面没有加系统错误,打印:

OK,get it.

 

2、try-except-else

举个例子:

打印:

可见,有异常时,else block时不执行的。

那,无异常时:

   

打印:

可见,无异常时else block执行。

至此可以写出try/except/else的格式

try:
    try block
except ERROR1:
    except ERROR1 block
except ERRPR2:
    except ERROR2 block
            ......
except:
    except block
else:
    else block

当然, 这些测试只是看到语句的功能,具体的实现内部原理再说吧, 一开始看那些得把人搞晕。

 

3、try-finally

作用: 无论try语句是否有异常,最后都要执行的代码

例子:

错是有的,先执行完finally block,然后回到try block报错。

当然 try,except,else,finally是可以全部组合在一起用的。

 

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...