龙空技术网

python学习之路(14):python中的异常捕捉与异常处理

怡和路恶霸 441

前言:

目前看官们对“pythonexceptraise”大致比较珍视,同学们都需要学习一些“pythonexceptraise”的相关内容。那么小编也在网络上网罗了一些关于“pythonexceptraise””的相关文章,希望看官们能喜欢,姐妹们快快来学习一下吧!

在刚学习Python,经常会遇到各种各样的错误,在这里介绍一下对错误的捕获以及对错误的异常处理,python中错误大致可以分为两种:语法错误和异常。下面详细讲一下。

语法错误

Python 的语法错误或者称之为解析错误,刚学编程的时候经常会遇到这种问题,下面举个例子来说明一下语法错误:

上面代码在在定义函数的时候少了一个冒号(:)。语法分析器指出了出错的一行,并且在最先找到的错误的位置标记了一个小小的箭头,执行到语法错误这一行后,程序就会终止运行,对于这种错误只能是自己查看IDE指出的错误信息,仔细检查来看看到底哪里的语法写错了,找到之后修改为正确的就行了。

异常

异常就是Python程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误就是异常了。异常一般不会被程序处理,跟上面的语法错误一样IDE都会输出错误信息,并终止程序的执行,例如:

上面代码中,我用一除以零,零不能作为除数,学过小学数学的都知道,但是这句语法是正确的。IDE并不会在线面画上红色波浪线来提示你有错误,只有在执行它的时候会打印错错误信息:除数为0(ZeroDivisionError: division by zero),这就是异常。

异常处理

遇到上面的异常,我们可以用代码捕获异常并进行相应的处理,捕获异常一般用try……except……语句。例如:

. 上面代码把我们认为可能会有异常的代码写在try下面。Except下面是如果遇到了异常,就会执行except下面的代码,来对异常进行处理。来保证代码的正常运行。

所有异常都可以单单用一个Except来捕获,但是这样程序并不能指出程序的错误信息,这时候我们可以在except后面指定要捕获异常类型,来获取具体的异常信息。比如,要捕获除数不能为0的异常可以在后面加上ZeroDivisionError。

指定捕获的异常后,我们就可以得到具体的错误信息了。但是如果我们指定的异常类型,与实际异常不符合的话,程序也是不会执行except下面的代码的,并且会终止程序执行,例如:

对于这种情况,我们可以在except后面指定多个要捕获的异常类型,例如:

手动抛出一个异常

Python 使用 raise 语句抛出一个指定的异常。例如:

个人觉得raise 语句没多大用处,也有可能是我刚学,还没能体会到它的用处。

Try…except…else

在后面加一个else语句的话,如果没有捕捉异常就会执行else里面的代码,如果捕捉到了则不会执行。例如:

没捕捉到的

捕捉到错误的

Try…except…finally

如果在后面加的finally 语句的话,不管有不有异常都会执行finally 里的代码,例如:

没捕获异常

捕获到异常

标签: #pythonexceptraise