python错误捕获

python 错误捕获:try...except...finally...

程序在运行的过程中,不可避免的总要出现错误,和其它语言一样,python提供了一套错误捕获机制:try...except...finally... 例如:

def division(x, y):
    try:
        result = x / y
        return result
    except ZeroDivisionError:
        print('***************** y = ', y)
    except TypeError:
        print('************* 类型不对')
    finally: #finally 始终会执行
        print('end ...')
print(division(2, '3'))

上述事例中执行到: result = x / y 由于传入的y是字符串,(算术运算只是是int 或 float 类型) 则会执行except TypeError: 打印************* 类型不对 然后执行finally ,return result则不会执行。

抛出错误:因为错误本身是一个类,捕获一个错误就是捕获到该类的一个实例。Python的内置函数会抛出很多类型的错误,我们也可以自定义错误类型。

如果要抛出错误,首先根据需要,可以定义一个错误的类,选择好继承关系,然后,用raise语句抛出一个错误的实例,例如:

class Invalid(ValueError):
    pass

def division(x, y):
    try:
        result = x / y
        return result
    except Exception as e:
        raise Invalid('非法输入', y)
    finally:
        print('end ...')

print(division(2, '3'))
  • 抛出错误:

Traceback (most recent call last):
File "Test.py", line 15, in <module>
print(division(2, '3'))
File "Test.py", line 11, in division
raise Invalid('非法输入', y)
main.Invalid: ('非法输入', '3')

错误记录:使用logging模块,通过配置,logging还可以把错误记录到日志文件里。
import logging

def division(x, y):
    try:
        result = x / y
        return result
    except Exception as e:
        logging.exception(e)
    finally:
        print('end ...')
print(division(2, '3'))
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,628评论 1 118
  • 高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。 ...
    时间之友阅读 785评论 0 1
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,238评论 4 16
  • 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作...
    蝴蝶兰玫瑰阅读 400评论 1 1
  • 五月的第一天 风起云涌 大雨滂沱 瞬间在睡梦中被雷声打醒 好一个美梦 真想一直做下去 醒来 听风声 看雨滴 等乍暖...
    致田花艺小秦阅读 337评论 0 2