python中的异常处理

Python提供了异常和断言来处理程序中出现的异常和错误。
Python中所有的异常类的根类都是BaseException类,其下有三个子类:

  • Exception类,大部分常规的异常类的基类都是Exception,的子类。
  • SystemExit类:程序的退出异常
  • KeyboardInterrupt:因用户按下Ctrl+C组合建(Linux中)来终止命令行程序而触发。
try/except来检测语句的异常;

格式如下:

	try :
		<可能出现异常的语句块>
	
	except  异常名:
		异常处理
	except  异常名:
		异常处理
	except  异常名:
		异常处理
	else:
		处理语句
	finally:
		处理语句

注意,else是当之前的异常都不是的时候将执行else中的操作,而finally里面的处理是,无论是否发生异常,还是异常与下面的异常都不匹配,都将会执行,即使没有没有发生异常。

例子:

	while True:
		try:
			x = float(input('请输入价格'))
			print('价格为 %5.3f' % x)
		except ValueError:
			print("您输入的不是数字")
		except Exception:
			print("输入有误")
		else:
			print("没有作物或异常")
		finally:
			print("这句话始终要执行的")
自定义异常

自定义异常需要raise来自己抛出异常。

	class MyException (Exception):      #这是自己定义的一个异常类
		def __init__(self, num):
			super(MyException, self).__init__()
			self.num = num
	
		def getnum(self):
			return self.num
				
	
	while True:
		try:
			x = float(input('请输入价格'))
			if x < 0:
				raise MyException(x)   #显示抛出这个异常
			print('价格为 %5.3f' % x)
		except ValueError:
			print("您输入的不是数字")
		except MyException as e:      #接收这个异常
			print("%f太小,输入不能为负数" % e.getnum())
		else:
			print("没有作物或异常")
		finally:
			print("这句话始终要执行的")
with语句

with语句就是化简try、except语句,但是,使用是有局限性的。比如,在打开文件后,可以再try语句的finally中把文件关闭掉,而with语句无论程序是否出现了异常,文件系统都有系统自动关闭。
使用范围:file, decimal , Context, thread, LockType, threading, Lock, threading, RLock, Condition, semaphore, BoundedSemaphore等。

		with open("111.txt", 'r') as f:
			for line in f:
				print(line)
断言

断言是申明表达式为真的判定,如果表达式为假,则抛出异常,如果判定为真,不做任何操作。

			try:
				assert 2 == 1 * 1, "表达式错误"  #后面的字符串就是传入的参数。arg
			
			except AssertionError as arg:
				print(arg.__class__.__name__)
				print(arg)
			try:
				assert 2 == 1 + 1, "表达式错误"
			
			except AssertionError as arg:
				print(arg.__class__.__name__)
				print(arg)
			'''
			输出:
			AssertionError
			表达式错误
			'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值