12、python学习笔记——异常处理,日志模块

异常处理

什么是异常
什么是错误 程序真正运行前
有解释器发现的一般为语法错误 异常一般由逻辑引发

异常处理使用 try 语句实现
格式:
try:
#程序代码段
except 异常类型:
异常处理代码
…except 可以有多条语句,分别处理不同的异常
[
else:
没有异常时的操作
finally:
清理动作
]

except 之后不跟任何异常类型时,将捕获任意异常(其等价于捕获BaseException、Exception)
在python中所有的异常类型都是Exception的后代类

因此在我们使用异常类型时捕获范围较小的异常类需要放置在前面
如果异常没有被当前的except捕获,则向上一级的try语句抛出,直至被某一个try语句处理为止。若一直没有try语句处理则抛出

例如:

try:
	try:
		num = input('请输入两个数字,使用空格隔开')
		num = num.split(' ')
		num = [x for x in num if x]
		for i in range(len(num)):
			num[i] = float(num[i])
		num1 = input('请输入一个数字:')
		num.append(num1)
		print(sum(num)) 
	except ValueError:
		print('您输入的不是数字')
	else:
		print('ELSE')
	finally:
		print('inner end')
except TypeError:
	print('您输入的有误')
print('Process End')

**

自定义异常

**

定义一个继承于 Exception 的自定义异常类
我们可以通过raise语句手动抛出一个异常
except 子句中如果需要异常实例的内容 则在python3中 使用《异常类型 as e》我们就可以在自语句段中通过变量e获得捕获的异常实例。
在2中的语法为 《异常类型,e》
#inally 清理动作一般用于 文件的关闭,数据的关闭等操作。

class MyError(Exception):
	"""docstring for MyError"""
	def __init__(self, arg):
		Exception.__init__(ValueError(int))
		self.arg = arg
try:
	name = input('请输入一个用户名:')
	if len(name)< 8:
		raise MyError('您的用户名长度不足八位')
except MyError as e:
	print('e.arg')

扩展:文件基本操作
打开:f = open(path,module,[encoding])
module 常用值为 r 读 , w 写 , a 追加 ,b 二进制 , r+ 读写, w+写读
读取内容:data = f.read() #全部读取(文件的内容如果不操作游标则仅能读取一次)
关闭: f.close()

示例代码:
try:
	'''
	各种操作
	'''
	f = False
	f = open('file')
	'''
	各种操作
	'''
except:
	pass
finally:
	if f:
		f.close()

日志模块使用

import logging
日志级别 NOTES<DEBUG<INFO<WARNING<ERROR<CRITICAL

logging.basicConfig(level=logging.DEBUG
logging.error(‘这是一个日志信息’)
logging.info(‘这是一个info信息’)
logging.debug(‘这是一个debug信息’)

try:
	try:
		num = input('请输入两个数字,使用空格隔开')
		num = num.split(' ')
		num = [x for x in num if x]
		for i in range(len(num)):
			num[i] = float(num[i])
		num1 = input('请输入一个数字:')
		num.append(num1)
		print(sum(num)) 
	except ValueError:
		print('您输入的不是数字')
	else:
		print('ELSE')
	finally:
		print('inner end')
except TypeError:
	print('您输入的有误')
print('Process End')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值