Python常见异常处理

1.异常

Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果你未对异常进行处理,程序将停止,并显示一个traceback,其中包含有关异常的报告。
异常使用try-except代码块处理的。使用try-except代码块时,即便出显异常,程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的traceback。

2.try-except代码块处理异常

try:
	print(5/0)
except ZeroDivisionError:
	print("Please don't divide by zero!")
Please don't divide by zero!

我们将导致错误的代码print(5/0)放在一个try代码块中。如果try代码块中的代码运行起来没问题,Python将跳过except代码块;
如果try代码块导致了错误,Python将查找这样的except代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。
如果try-except代码块后面还有代码,程序将接着运行。

3.try-except-else代码块处理异常

try-except-else代码块的工作原理大致如下:
Python尝试执行try代码块中的代码;只有可能引发异常的代码才需要放在try语句中。
有时候,有一些仅在try代码块成功执行时才需要运行的代码;这些代码放在else代码块中。
except代码块告诉Python,如果它尝试运行try代码块中的代码时引用了指定的异常,该怎么办。
通过预测可能发生错误的代码,可编写健壮的程序,它们即便面临无效数据或缺少资源,也能继续运行,从而能够抵御无意的用户错误和恶意的攻击。

4.两种常见异常

  1. 处理ZeroDivisionError异常
print("Enter Two Numbers now: ")
print("Enter 'q' to qiut")
while True:
	first_number = input("\n First number: ")
	if first_number=='q':
		break
	second_number = input("Second number: ")
	try:
		answer = int(first_number/)int(second_number)
	except ZerroDivisionError:
		print("Don't divide by 0!")
	else:
		print(answer)

Python执行try中的除法运算,这个代码可能出现错误。如果出现错误将执行except中的语句而不是报出traceback的错误。
依赖于try代码块成功执行的代码都放在else代码块中;此实例中如果除法运算成功,我们就使用else代码块来打印结果

  1. 处理FileNotFountError异常
filename = 'Test.txt'
try:
	with open(filename) as file_project:
		contents = file_project.read()
except FileNotFoundError:
	message="Sorry, the file"+filenam+" does not exist!"
	print(message)

在这个事例中,try代码引发FileNotFoundError异常,因此Python找出与该错误匹配的except代码块,并运行其中的代码。最终的结果是显示一条友好的错误消息,而不是traceback

Sorry, the file Test.txt does not exist.

5.pass语句

在Python中还有一个pass语句,可以在代码块中使用它来让Python什么都不做

try:
	--snip--
except FileNotFoundError:
	pass
else:
	--snip--

pass语句还充当占位符,它提醒你在程序的某个地方什么都没有做,
并且以后也许要在这做什么。
若用户知道分析那些文件,他们可能希望在有文件没有分析时出现一条消息,并将其原因
告诉他们。如果用户只想看到结果,就无需在有些文件不存在时告知他们。向用户显示他
们不想看到的消息可能降低程序的可用性。Python的错误处理结构让你能够细致地控制与
用户分享错误信息的程度,要分享多少信息由你决定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值