Python基础知识第九天

异常的本质:
异常指程序运行过程中出现的非正常现象,如用户输入错误、除数为零等
Python中引进了很多用来描述和处理异常的类,成为异常类。异常类定义中包含了该类异常的信息和处理的方法

异常处理结构:

#try...expect结构
try:
	被监控的可能引发异常的语句
except Exception1:
	异常处理语句块
except Exception2:
	异常处理语句块
...
except BaseException [as e]:
	处理可能遗漏的异常的语句块
#注:应将子类放在前面优先处理,如Exception1是Exception2的子类

#例,如果没有异常,不执行except
try:
	print('step1')
	a = 3/0 #异常
	print('step2') #不会执行,跳过
except BaseException as e: #跳到这里
	print('step3')
	print(e)
print('step4') #不影响执行
#try...except...else结构,如果try中有异常,执行except,如果没有异常,执行else

#例
try:
	a = input('输入被除数')
	b = input('输入除数')
	c = float(a)/float(b)
except BaseException as e:
	print(e)
else:
	print('结果是', c)
print('结束')
#try...except...finally结构
#finally无论是否发生异常都会执行,通常用来释放try中的申请资源

#例
try:
	a = input('输入被除数')
	b = input('输入除数')
	c = float(a)/float(b)
except BaseException as e:
	print(e)
else:
	print('结果是', c)
finally:
	print('无论是否发生异常,都会执行')
print('结束')

常见的异常:

SyntaxError:语法错误
NameError:尝试访问一个没有申明的变量
ZeroDivisionError:除数为0错误
ValueError:数值错误
TypeError:类型错误
AttributeError:访问对象的不存在属性
IndexError:索引越界异常
KeyError:字典关键字不存在

with上下文管理:
比finally结构更简单,更方便实现释放资源

#with语法结构
with context_expr [as var]:
	语句块

#例
with open('文件名') as f:
	c = f.readline()
	print(c)
print('结束')

traceback模块:
详细打印错误信息

try:
	a = input('输入被除数')
	b = input('输入除数')
	c = float(a)/float(b)
except:
	traceback.print_exc()
print('结束')

#将异常记录到文件中
try:
	num = 1/0
except:
	with open('文件名') as f:
		traceback.print_exc(file = f)

自定义异常:
自定义异常类,通常继承Exception或其子类即可,命名一般以Error、Exception为后缀

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值