python3简明教程 --异常处理

本文深入探讨Python中的异常处理技巧,包括try...except语句的使用,如何通过raise语句主动抛出异常,以及利用finally子句确保代码在任何情况下都能执行必要的清理操作。此外,还提供了一个将分钟数转换为小时和分钟的实用程序示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本实验来源于 实验楼:python3简明教程 作者: FrostSigh

索引:

项目Value
1,异常处理try…except 例子
2,抛出异常raise语句
3,定义清理行为finally子句
挑战玩转函数

我们使用try...except块来处理任意异常。基本的语法:

try:
	statements to be inside try clause
	statements2
	statements3
	...
except ExceptionName:
	statements to evalueted in case of ExceptionName happens

他的工作方式:

  • 首先,执行try子句
  • 如果没有异常发生,except子句在try语句执行完毕后就被忽略。
  • 如果try子句执行过程中发生了异常,那么该子句其余部分会被忽略。
    如果异常匹配于except关键字后面指定的异常类型,就执行对应的except子句。然后继续执行try语句之后的代码。
  • 如果发生了一个异常,except没有与之匹配,会传递到上一级try语句中
    如果最终找不到对应的处理语句,就会成为一个 未处理异常,终止程序运行,显示提示信息。

1,异常处理

def get_number():
	"""Rutern a float number"""
	number = float(input("Enter a float number: "))
	return number
while True:
	try:
		print(get_number())
	except ValueError:
		print("We have a ValueError.")

在这里插入图片描述先定义一个函数:让输入一个float类型的数并返回它;
然后在try子句中调用该函数,如果输入的是float类型数,则正确返回;如果不是则发生ValueError异常,在except子句中匹配到该异常,执行except子句;
最后我们ctrl + C 结束程序,发生KeyboardInterrupt异常,没有匹配到相应的except,打印错误信息。

2,抛出异常

使用raise语句来抛出一个异常

raise ValueError("A value error happend.")

在这里插入图片描述
可以用try…except语句来捕获raise语句抛出的异常

try:
	raise ValueError("a Value Error happend.")
except ValueError:
	print("Yes ,a Value Error has happend.")

在这里插入图片描述

3,定义清理行为

try语句还有另一个可选的finally子句目的在于定义在任何情况下都一定要执行的功能。
如:

try:
	raise KeyboardInterrupt
finally:
	print("Goodebye, keyboard.")

在这里插入图片描述不管有没有发生异常,finally子句在程序离开try后都一定会被执行。
在真实的应用程序中,finally子句用于释放外部资源(文件或网络连接之类)。

挑战

实现一个程序,将分钟数转换为小时和分钟。
注意:不能使用input()函数

import sys

def Hours(minutes):
	if minutes < 0:
		raise ValueError("Not True!")
	else:
		print("{} H, {} M.".format(int(minutes // 60), minutes % 60))
	
def main():
	try:
		Hours(int(sys.argv[1]))
	except:
		print("Parameter Error")

if __name__ == '__main__':
	main()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值