python3异常_python3-抛出、捕获异常

python3-抛出、捕获异常

发布时间:2018-08-27 10:19,

浏览次数:439

, 标签:

python

''' 异常:错误发生的信号,程序随之终止 三个部分: 1.traceback 异常的追踪信息(链接) 2.异常的类型 3.异常信息 错误两大类:

1.语法错误(运行前进行判定和修正) 2.逻辑错误 异常种类: AttributeError 属性错误

试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输出错误 输入/输出异常;基本上是无法打开文件 ImportError

模块导入错误 无法引入模块或包;基本上是路径问题或名称错误 IndentationError 缩进错误 语法错误(的子类) ;代码没有正确对齐

IndexError 索引错误 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 关键字错误 试图访问字典里不存在的键

KeyboardInterrupt 键盘中断错误 Ctrl+C被按下 NameError 名称错误 使用一个还未被赋予对象的变量 SyntaxError

语法错误 Python代码非法,代码不能编译(个人认为这是语法错误,写错了) TypeError 类型错误 传入对象类型与要求的不符合

UnboundLocalError 局部变量错误 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它

ValueError 值错误 传入一个调用者不期望的值,即使值的类型是正确的 异常处理: #基本语法为 try: 被检测的代码块 except 异常类型 as

别名: #别名用来去除异常的值 try中一旦检测到异常后,执行的代码块。 else: 没有异常时执行 finally:

无论异常与否,都会执行该模块,通常是进行清理工作 try: 代码块1 代码块2 …… except StopIteration: 代码块 …… else:

代码块 …… finally: 代码块 …… 断言:assert 条件语句 如果满足断言条件,继续运行;如果不满足,抛出异常(AssertionError)

''' # 1.指定异常捕捉(单分支) try: print('========>1') print('========>2') l = [1, 2, 3]

l[100] # IndexError # 异常被捕捉,不执行try下后续代码块 print('========>3') d = {'x': 1, 'y':

2} d['z'] # KeyError print('========>4') except IndexError as ie:

print('IndexError',ie) print('other code') # 2.异常处理多分支 try: print('========>1')

print('========>2') d = {'x': 1, 'y': 2} d['z'] # KeyError print('========>3')

l = [1, 2, 3] l[100] # IndexError print('========>4') except IndexError as ie:

print('IndexError',ie) except KeyError as ke: print('KeyError',ke) # 同上 except

(IndexError,KeyError) as e: print('Error',e) print('other code') # 3.万能异常

Exception:可以匹配任意类型的异常 try: print('========>1') print('========>2') d = {'x': 1,

'y': 2} d['z'] # KeyError print('========>3') l = [1, 2, 3] l[100] # IndexError

print('========>4') except Exception as e: print('Error',e) print('other code')

# 4.万能异常+多分支,实现指定错误指定处理。即:万能异常放最后捕获 try: print('========>1')

print('========>2') d = {'x': 1, 'y': 2} d['z'] # KeyError print('========>3')

l = [1, 2, 3] l[100] # IndexError print('========>4') except IndexError as ie:

print('IndexError',ie) except KeyError as ke: print('KeyError',ke) except

Exception as e: print('Error',e) print('other code') # 5.else和finally的使用和区别

try: print('========>1') print('========>2') d = {'x': 1, 'y': 2} d['z'] #

KeyError print('========>3') l = [1, 2, 3] l[100] # IndexError

print('========>4') except IndexError as ie: print('IndexError',ie) except

KeyError as ke: print('KeyError',ke) except Exception as e: print('Error',e)

else: print('else') finally: print('finally') print('other code') # 6.主动抛出异常

raise TypeError('类型错误') # 7.触发异常 try: raise TypeError('类型错误') except Exception

as e: print(e) # 8.自定义异常 class MyException(BaseException): def __init__(self,

msg): self.msg = msg def __str__(self): return self.msg try: raise

MyException('类型错误') except MyException as me: print(me) # 断言:assert 条件语句 #

如果满足断言条件,继续运行;如果不满足,抛出异常(AssertionError) print('1111') l = [1,2,3,] assert

len(l)>5 print('22222222') # 捕获异常 class People: def __init__(self,name,age):

self.__name = name self.__age = age def get_interface(self):

print(self.__name,self.__age) def set_inter(self,name,age): try: if not

isinstance(name,str): raise TypeError('名字必须是str类型') if not isinstance(age,int):

raise TypeError('年龄必须是int类型') except TypeError as te: print(te) return te

self.__name = name self.__age = age p1 = People(100,100) p1.get_interface()

p1.set_inter(110,101) p1.get_interface() p1.set_inter('name1','age1')

p1.get_interface() p1.set_inter('name2',19) p1.get_interface()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值