异常

本文详细介绍了Python中的异常处理机制,包括try、except、else和finally语句的使用规则及实例,解释了异常层次结构,并探讨了断言assert的作用与语法。适合初学者和进阶者加深对Python错误处理的理解。
摘要由CSDN通过智能技术生成

异常

  • 异常就是报错
  • 两个场景要用到捕获异常
    • 业务逻辑需要判断,判断如果出现异常采取什么措施

语法规则

try:
	pass
except Exception:
	raise Exception
else:
	pass
finally:
	pass
  1. try后面必须跟上except
  2. try加上自己的代码块
  3. except只有在函数中才能使用return
  4. except加上要捕获的异常类
  5. finally不管是否发生异常,始终都会执行
try:
	print(a)	#出现异常时直接到except NameError:,没执行i = 1 / 0
	i = 1 / 0
# 要捕获的异常名NameError要和可能出现的异常名相对应,否则无下面的效果
#except NameError:	#当程序出异常时会运行下行代码,没异常正常运行上面的代码
#	print('出现异常')
except (NameError,ZeroDivisionError):	#当程序出异常时会运行下行代码,没异常正常运行上面的代码
	print('出现异常')
except (NameError,ZeroDivisionError) as e:		#e代表刚刚捕获的异常对象
	print(e)		#name 'a' is not defined

使用规则

try:
	可能出现异常的代码
except Exception:		#Exception代替所有异常的类型,相当于所有异常的父类
	抛出或者返回异常
else:
	没有报错执行
finally:		#不管前面是否出异常,都执行
	以上执行完执行

实例

def file_test():
    try:
        with open("a.py","r") as f:
            f.write("aaa")
    except:
        print("出错误")
        print(e)		#[Errno 2] No such file or directory: 'a.py'
    else:
        print("没出错")
        raise NameError		#抛出错误
    finally:
        print("总会被执行")
    print("hello Python")
file_test()
  • 将可能会发生异常的代码放在try中,就可以得到异常,并做相应处理
  • except用来接收异常,并且可以抛出或者返回异常
  • else在没有异常的时候会执行
  • finally不管是否有异常,都会执行

异常层次结构

  • 在Python中所有的异常都是继承BaseException
  • 代码中会出现异常都是Exception的子类,因此在except中只需要在最后加上Exception即可
  • 在抛出异常的时候,会从上到下依次对比异常,找到之后就不会再往后查找

断言assert

assert 1 == 1
assert 1 == 2	
”“”
Traceback (most recent call last):
  File "/home/xiaoge/PycharmProjects/spider/venv/try.py", line 2, in <module>
    assert 1 == 2
AssertionError
“”“
  • 断言语句是将调试断言插入程序的一种便捷方式
  • 断言是为了查找程序的异常然后终止程序便于我们调试
    assert的语法规则是:
    • 表达式返回True不报错
    • 表达式返回False报错,报AssertionError
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值