Python——简简单单的错误处理

这个月发生太多事了,导致断断续续的发表学习文章,17年已过一半了,加油努力,相信下半年会更好的!!

Python——简简单单的错误处理

第一.try...except...finally

处理错误十分方便,当我们认为某些代码可能会出错时,就可以用try运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块,执行完except后,如果有finally语句,则会运行finally语句,如下面代码

代码:

try:

print('try')

r = 100 / 0

print('result:', r)

except ZeroDivisionError as e:

print('except:', e)

finally:

print('finally')

运行结果:

try

('except:', ZeroDivisionError('integer pision or modulo by zero',))

finally

如果把除数0改为5

运行结果:

try

('result:', 20)

finally

第二.调用堆栈

如果错误没有被捕获,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出

代码:

def foo(s):

return 10 / int(s)

def bar(s):

return foo(s) * 2

def main():

bar('0')

main()

运行结果:

********END********

Traceback (most recent call last):

File "error.py", line 20, in

main()

File "error.py", line 18, in main

bar('0')

File "error.py", line 15, in bar

return foo(s) * 2

File "error.py", line 12, in foo

return 10 / int(s)

ZeroDivisionError: integer pision or modulo by zero

第三.记录错误

可以用logging记录错误信息,同时程序也可以运行下去

代码:

import logging

def foo(s):

return 10 / int(s)

def bar(s):

return foo(s) * 2

def main():

try:

bar('0')

except Exception as e:

logging.exception(e)

main()

print('END')

运行结果:

ERROR:root:integer pision or modulo by zero

Traceback (most recent call last):

File "error.py", line 32, in main

bar('0')

File "error.py", line 28, in bar

return foo(s) * 2

File "error.py", line 25, in foo

return 10 / int(s)

ZeroDivisionError: integer pision or modulo by zero

END

第四.抛出错误(raise)

我们自己编写的函数也可以抛出错误。如果要抛出错误,首先根据需要,可以定义一个错误的class,选择好继承关系,然后用raise语句抛出一个错误实例

def foo(s):

n = int(s)

if n==0:

raise ValueError('invalid value: %s' % s)

return 10 / n

def bar():

try:

foo('0')

except ValueError as e:

print('ValueError!')

raise

bar()

运行结果:

ValueError!

Traceback (most recent call last):

File "error.py", line 53, in

bar()

File "error.py", line 48, in bar

foo('0')

File "error.py", line 43, in foo

raise ValueError('invalid value: %s' % s)

ValueError: invalid value: 0

综述:

处理错误可以用try...except...finally,关键要学会分析出错的地方;程序也可以主动抛出错误,让调用者来处理相应的错误。

展开阅读全文

页面更新:2024-05-11

标签:除数   错误   可能会   堆栈   语句   下半年   函数   实例   主动   定义   努力   关键   发生   代码   程序   数码

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top