python exit错误_python_异常报错

一、报错类型

AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x

IOError 输入/输出异常;基本上是无法打开文件

ImportError 无法引入模块或包;基本上是路径问题或名称错误

IndentationError 语法错误(的子类) ;代码没有正确对齐

IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

KeyError 试图访问字典里不存在的键

KeyboardInterrupt Ctrl+C被按下

NameError 使用一个还未被赋予对象的变量

SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)

TypeError 传入对象类型与要求的不符合

UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,

导致你以为正在访问它

ValueError 传入一个调用者不期望的值,即使值的类型是正确的

二、捕获异常

基本写法:

try:

.......要执行的代码

except'写入异常的类型':

..........跳过异常

异常类只能用在指定的异常情况,如果不能确定异常的类型是不能使用的。

万能捕获异常:

Exception 这个异常确实能捕捉所有的异常,但是出现的所有异常都只能执行Exception下的代码。如果需求是出现什么异常就走该异常下的代码,就要换多分支的异常捕捉。

try:print('-------')print('-------')print('-------')print(y)print('======')exceptNameError:print('11111')except Exception as n: #Exception万能捕捉异常

print(n)

多分支:

try:print('-------')print('-------')print('-------')print(x)print('======')exceptKeyError:pass

except NameError as n: #类型:值,可以理解成k:v

print(n)else:#当try的代码执行没有报错,就会执行这个代码

print('没有异常的时候就执行这个代码......')finally: #不能tey except 的执行结果,最后都会执行这个代码

print('最后执行的代码,做清理的代码...')

为异常类附变量

try:print(yy)

eccept NameError as n:#NameError as n

pass

也可以在多分支后面来一个Exception

try:print('-------')print('-------')print('-------')print(y)print('======')exceptNameError:pass

exceptKeyError:pass

exceptValueError:pass

except Exception: #Exception万能捕捉异常

print()'''Python就是逐行读取'''

异常的其他语句写法:

try: .....except:.....else:....finally:.....

try:print('-------')print('-------')print('-------')print(x)print('======')exceptKeyError:pass

except NameError as n: #类型:值,可以理解成k:v

print(n)else:#当try的代码执行没有报错,就会执行这个代码

print('没有异常的时候就执行这个代码......')finally: #不能tey except 的执行结果,最后都会执行这个代码

print('最后执行的代码,做清理的代码...')

finally:清理,比如:用户登陆在输入账户或密码错误的时候,就应该要将该页面从服务器端清理掉,不然当用户反复的去调取,就会使服务端死机。

主动抛出异常:

try:raise TypeError('没有这个key值')exceptKeyError:pass

'''Traceback (most recent call last):

raise TypeError('没有这个key值')

TypeError: 没有这个key值'''

自定义异常报错:

classad(BaseException):def __init__(self,msg):

self.msg=msgdef __str__(self):returnself.msgtry:raise ad('类型错误')exceptad as e:print(e)

断言:

在开发一个程序时候,与其让它运行时崩溃,不如在它出现错误条件时就崩溃(返回错误)。这时候断言assert 就显得非常有用。

x = 1y= 1

assert x == 4 #当不满足的时候,就不会往下执行代码,

print(11111)

使用try..except的方式

1:把错误处理和真正的工作分开来

2:代码更易组织,更清晰,复杂的工作任务更容易实现;

3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;

尽量少使用try....except,因为他的可读性差。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值