如何利用Python异常处理实现非数字输入时程序优雅退出?
输入非数字时的异常处理实现方案
先指出你现有代码存在的几个核心问题:
- 把
int(input())放在try块外,输入非数字时会直接触发未被捕获的异常,try块根本起不到作用 try块内的x==int()和y>=0 or y<=0都是无意义的判断,不会触发任何异常- 未导入
sys模块,调用sys.exit()会直接报错
下面是修正后的代码,可实现输入非数字时输出错误提示并优雅退出:
import sys # 处理第一个数字输入 try: x = int(input("Choose a number: ")) except ValueError: print("Invalid input.") sys.exit() # 处理第二个数字输入 try: y = int(input("Choose a number: ")) except ValueError: print("Invalid input. Please try again.") sys.exit() # 这里可以添加后续业务逻辑,比如使用x和y进行计算等 print(f"You entered x: {x}, y: {y}")
关键说明:
- 将
int(input())整体放入try块,当输入无法转换为整数时会抛出ValueError,被对应except块捕获 - 明确指定捕获
ValueError而非使用空except(空except会捕获所有异常,包括意外错误,不推荐) - 必须导入
sys模块才能使用sys.exit()实现优雅退出 - 如果需要让用户重新输入而非直接退出,可改用循环重试逻辑:
import sys def get_valid_number(prompt): while True: try: return int(input(prompt)) except ValueError: print("Invalid input. Please enter a number.") # 若要直接退出,取消下面一行注释即可 # sys.exit() x = get_valid_number("Choose a number: ") y = get_valid_number("Choose another number: ") print(f"You entered x: {x}, y: {y}")
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

