基本模型:
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,其他的逻辑错误应该尽量修正