美文网首页
Python 错误处理

Python 错误处理

作者: keinYe | 来源:发表于2019-01-08 22:24 被阅读13次
image

程序在运行的过程中总是会遇到各种各样的问题,有一部分是 BUG,另外一部分我们称之为异常(或错误)。大多数编程语言均使用以下语句来处理异常,Python 也不例外。

try:
    pass
except:
    pass
finally:
    pass

先来看一个最简单的处理异常的示例

#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
    r = 1 / 0
except:
    print('except')

以上代码执行结果如下

except

当我们认为一段代码可能会出现错误时,我们可以使用 try 语句对错误进行处理,否则错误将一级级向上报,直到有函数可以处理该错误。若无函数处理该错误,程序将推出执行。

在出现错误时我们可以针对错误类型的不同,来输出不同的结果

#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
    r = 1 / 0
except ZeroDivisionError:
    print ("The second number can't be zero!")
except ValueError:
    print "Value Error."

执行以上代码,我们将得到以下结果

The second number can't be zero!

现在我们将代码进行修改,修改后结果如下

#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
    r = 1 / '1'
except ZeroDivisionError:
    print ("The second number can't be zero!")
except ValueError:
    print "Value Error."

执行以上代码,我们将得到以下结果

Value Error.

从以上代码可以看出,针对不同的错误类型我们可以进行不同的输出结果,在 Python 中常用的错误类型如下

异常 描述
NameError 尝试访问一个没有申明的变量
ZeroDivisionError 除数为 0
SyntaxError 语法错误
IndexError 索引超出序列范围
KeyError 请求一个不存在的字典关键字
IOError 输入输出错误(比如你要读的文件不存在)
AttributeError 尝试访问未知的对象属性

在 try 语句中我们可以使用 else 和 finally 关键字,当执行 try 后的内容 except 后的内容被跳过时执行 else 后的内容;而 finally 后的语句无论前面执行的是 try 后的语句还是 except 后的语句都会被执行。

#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
while True:
    try:
        x = raw_input("the first number:")
        y = raw_input("the second number:")
        
        r = float(x)/float(y)
    except:
        print('except try again')
    else:
        print('else')
    finally:
        print('finally')

执行结果如下

the first number:1
the second number:2
else
finally
the first number:1
the second number:0
except try again
finally

try...except...在某些情况下能够替代 if...else.. 的条件语句

大多数情况下 python 解释器已经给出了完善的错误提示信息,我们无需在单独编写提示信息,那我们我们该如何使用系统默认的提示信息呢,我们可以通过参数 e 来获取系统默认的提示信息。

#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
while True:
    try:
        x = raw_input("the first number:")
        y = raw_input("the second number:")
        
        r = float(x)/float(y)
    except ZeroDivisionError as e:
        print(e)
    else:
        print('else')
    finally:
        print('finally')

执行结果如下

the first number:1
the second number:0
float division by zero
finally
the first number:1
the second number:-
could not convert string to float: '-'
finally
the first number:1
the second number:1
else
finally

在以上代码中我们并未编写任何的错误提示信息,但是在出现错误时程序正常打印了错误信息 'float division by zero''could not convert string to float: '-''

相关文章

  • Python学习之错误调试和测试

    在程序运行过程中,总会遇到各种各样的错误,Python内置了一套异常处理机制,来帮助我们进行错误处理。 错误处理 ...

  • python中try...except...else...fin

    异常处理 python中我们会使用try...except...else...finally...的错误处理机制,...

  • python错误、调试和测试

    错误处理 try与其他语言一样,python也有错误捕获的功能 Python的错误其实也是class,所有的错误类...

  • CentOS6升级Python2.6到3.7,错误处理[No m

    CentOS6升级Python2.6到3.7,错误处理[No module named '_ctypes'] 因开...

  • Python学习记录之:错误、调试和测试

    错误处理 常见的错误类型和继承关系看这里:https://docs.python.org/2/library/ex...

  • Python 错误处理

    在程序运行的过程中,如果发生了错误,可以实现约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因,在操作...

  • 【python】错误处理

    当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至...

  • Python 错误处理

    程序在运行的过程中总是会遇到各种各样的问题,有一部分是 BUG,另外一部分我们称之为异常(或错误)。大多数编程语言...

  • 错误、调试和测试

    高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。 ...

  • 2019-05-30 错误调试和测试

    高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。 ...

网友评论

      本文标题:Python 错误处理

      本文链接:https://www.haomeiwen.com/subject/mmdirqtx.html