Python、异常

定义:

异常是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生异常。异常是python的对象,表示一个错误。当Python脚本发生异常时,我们需要捕获并处理异常,否则程序就会终止执行。

异常处理

try语句
基本形式:try/expect. try/expect是用来检测try中的语句块中的错误,从而让expect语句捕获异常信息并处理。。
捕获异常的语法:
try:
<语句> #运行别的代码
expect<名字>:
<语句> #如果在try部分发生了异常
example:

>>> def exp_exception(x,y):
	try:
		a=x/y
		print('a=',a)
		return(a)
	except Exception:
		print('程序出现异常,异常信息:被除数为0')

>>> exp_exception(3,0)
程序出现异常,异常信息:被除数为0
>>> exp_exception(2,2)
a= 1.0
1.0
>>> 

抛出异常

Python用raise语句抛出一个指定异常。我们可以使用类(Exception的子类)或实例参数用raise语句引发异常。使用类时程序会自动创建实例。

>>> zhangsna
Traceback (most recent call last):              #因为zhangsna是未定义的所以报错出现异常
  File "<pyshell#16>", line 1, in <module>
    zhangsna
NameError: name 'zhangsna' is not defined
>>> raise zhangsna
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    raise zhangsna
NameError: name 'zhangsna' is not defined
>>> raise NameError('this is a NameError')
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    raise NameError('this is a NameError')
NameError: this is a NameError

>>> 
>>> try:
	raise NameError("This is NameError")
except NameError:
	print('an exception happende')      #后面不加raise	
an exception happende                   #输出对应字符就结束
>>> try:
	raise NameError('this is NameError')
except NameError:
	print('An exception happened!')     
	raise                               #最后加一个raise     

An exception happened!
Traceback (most recent call last):
  File "<pyshell#28>", line 2, in <module>
    raise NameError('this is NameError')
NameError: this is NameError

Python中重要的内建异常类
异常名称 描述
Exception 常规错误的基类
AttributeError 对象没有这个属性
IOError 输入/输出操作失败
IndexError 序列中没有此索引(index)
KeyError 映射中没有这个键
NameError 未声明/初始化对象(没有属性)
SyntaxError Python语法错误
SystemError 一般解释器系统错误
ValueError 传入无效的参数

捕捉多个异常

python支持一个try/except语句中处理多个异常,语法如下:
try:
<语句> #运行别的代码
expect<名字1>:
<语句> #如果在try部分引发了name1异常
expect<名字2>,<数据>:
<语句> #如果引发了name2异常,获得附加数据
一个try语句可能包含对各except子句,分别处理不同的异常,但最多只有一个分支会被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值