面向对象--异常处理

基本模型:
try: 被检测的代码块 except 异常类型: try中一旦检测到异常,就执行这个位置的逻辑
try:
    f = open('a.txt')
    g = (line.strip() for line in f)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
except StopIteration:
    f.close()

 对于这么零散的报错功能,有一个万能的

s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)


当用  except  Exception的时候,就会对所有的错误类型一次性报错,所以尽量用在一些别的模式后面

 

 

 

 

1)自己报错的时候 raise EvaException  的时候,如果不在EvaException 后面加东西,那么则不会显示任何东西

如果在括号里面加了东西,则会显示括号里的东西

class EvaException(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg

try:
    raise EvaException('类型错误')
except EvaException as e:
    print(e)

这里是主动插入错误。


2)断言
assert
assert 1==2直接报错。不推荐使用

什么时候用异常处理

有的同学会这么想,学完了异常处理后,好强大,我要为我的每一段程序都加上try...except,干毛线去思考它会不会有逻辑错误啊,这样就很好啊,多省脑细胞===》2B青年欢乐多

try...except应该尽量少用,因为它本身就是你附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的
这种东西加的多了,会导致你的代码可读性变差,只有在有些异常无法预知的情况下,才应该加上try...except,其他的逻辑错误应该尽量修正

posted @ 2017-08-17 15:46  forjie  阅读(121)  评论(0编辑  收藏  举报