文章目录

  • 一、 异常
  • 二、多个except异常代码块
  • 三、多重异常捕获:
  • 四、try-except语句嵌套
  • 五、 使用finally代码块释放资源
  • 六、自定义异常类
  • 七、手动引发异常:


一、 异常

   在出现异常的时候,捕获异常并处理,保证程序不会中断。(中括号即 可以省略)

python 剔除停用词 python 剔除异常数据_python 剔除停用词

python 剔除停用词 python 剔除异常数据_开发语言_02


例如:

#coding=utf-8

i = input('请输入数字:')
n = 8888
try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:  
	print("不能除以0,异常:{}".format(e))

二、多个except异常代码块

python 剔除停用词 python 剔除异常数据_python_03

  不同类型异常要给用户不同的处理方案,所以要有多个except代码块将异常分门别类的去处理。

#coding=utf-8

i = input('请输入数字:')
n = 8888
try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:  
	print("不能除以0,异常:{}".format(e))
except ValueError as e:
	print("输入的是无效数字,异常:{}".format(e))

三、多重异常捕获:

  如果多个exce代码块的异常处理过程类似,则可以合并处理。异常类型用逗号分隔。

i = input('请输入数字:')
n = 8888
try:
	result = n/int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except (ZeroDivisionError, ValueError) as e:
	print("异常发生:{}".format(e))

四、try-except语句嵌套

  • 只有有因果关系的才值得使用嵌套。
  • 第一个try:如果用户输入的是一些非数字类型的字符串,则捕获异常,将其转换成为有效数字,若转换不了则进行14行except代码块处理。
i = input('请输入数字:')
n = 8888

try:
	i2 = int(i)
	try:
		result = n/i2
		print('{0}除以{1}等于{2}'.format(n, i2, result))
	except ZeroDivisionError as e1:
		print("不能除以0,异常:{}".format(e1))
except ValueError as e2:
	print("输入的是无效数字,异常:{}".format(e2))

python 剔除停用词 python 剔除异常数据_代码块_04

五、 使用finally代码块释放资源

  有时在try-except语句中会占用一些资源,可以使用finally代码块释放资源(保证打开文件后给它关闭)。无论程序走的异常还是正常结束,都会调用finally代码块。

python 剔除停用词 python 剔除异常数据_代码块_05


python 剔除停用词 python 剔除异常数据_python 剔除停用词_06

i = input('请输入数字:')
n = 8888

try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:
	print("不能除以0,异常:{}".format(e))
except ValueError as e:
	print("输入的是无效数字,异常:{}".format(e))
finally:
	#释放资源源代码
	print('资源释放...')

python 剔除停用词 python 剔除异常数据_python 剔除停用词_07

六、自定义异常类

  定义一个异常类,继承Exception父类(由python官方提供的类)。

#coding=utf-8
class ZhijieketangException(Exception):
	def _init_(self,message):
		super()._init_(message)
  • 构造方法,message为异常的错误消息。
  • 需要调用父类的构造方法,将message消息传给父类。

七、手动引发异常:

  可能没有产生,但是用户就想让其引发异常,即可以通过程序代码引发异常,即将自定义异常引发使用。

  • raise语句:可以引发任何类型的异常。
  • 使用手动引发异常的目的:由于自定义的一个异常需要引发使用。
class ZhijieketangException(Exception):
	def _init_(self, message):
		super()._init_(message)

i = input('请输入数字:')
n = 8888
try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:
	#print("不能除以0,异常:{}".format(e))
	raise ZhijieketangExcept('不能除以0')
except ValueError as e:
	#print("输入的是无效数字,异常:{}".format(e))
	raise ZhijieketangException('输入的是无效数字')

python 剔除停用词 python 剔除异常数据_开发语言_08