1.异常处理
try: li = [5,12,9] print(li[5]) int('ko') except IndexError as e: print('IndexError:',e) except ValueError as e: print('ValueError:',e) except Exception as e: print('Exception:',e) else: print('无异常') finally: print('......') ''' 1.以上代码的执行流程: (1)try中的代码一旦出现异常,就执行except代码块,try中剩下的代码就不执行了 (2)若没异常,执行try以后,执行else代码; (3)不管有无异常,最后执行finally代码 2.关于except代码块: (1)IndexError、ValueError、Exception是捕获异常的类,e是这些类的对象 (2)IndexError/ValueError分别用来捕获索引错误/值错误;Exception是他们的父类,可以捕获所有错误 (3)执行流程:子类先上,如果子类捕获不到,父类最后上 (4)捕获到的错误类型,都会被他们的对象e拿到 '''
2.主动触发异常
try: raise Exception('ko') #此句会触发except except Exception as e: #e会拿到括号里的内容'ko' print(e)
3.自定义异常
class OldboyError(Exception): def __init__(self,msg): self.message = msg print(5) def __str__(self): return self.message # obj = OldboyError('lpp') # print(obj) try: raise OldboyError('lll') except OldboyError as e: #给OldboyError找了个对象e,触发了__init__方法;self接收了e,msg接收了111 print(e) #此句触发了__str__方法
4.断言
assert 1==1 #assert的条件满足,执行代码;不满足,报错 print(59955)