You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:05:24