当前位置:首页>python>从零开始学Python(第十三期)|学会try‑except,让程序再也不崩溃!

从零开始学Python(第十三期)|学会try‑except,让程序再也不崩溃!

  • 2026-09-03 16:25:56
从零开始学Python(第十三期)|学会try‑except,让程序再也不崩溃!

大家好,我是小吴!欢迎来到从零开始学Python第十三期。

前几期我们学完了 if 条件判断语句,还有 for、while 两种循环,相信大家已经可以独立写出不少简单程序了。

但写代码的时候,你大概率碰到过这种情况:程序要求用户输入数字,结果用户输入了文字,这时程序就会直接抛出错误、停止运行,满屏红色报错信息。

面对这种不按规则出牌的情况,就可以用到 try‑except 异常处理结构。合理使用它,就算用户输入不符合要求的内容,程序也不会直接终止,能够继续正常往下执行。

一、异常处理基础语法

try:    语句块          #优先执行这部分代码except 异常类型:    语句块          #仅在发生指定异常时执行

核心逻辑:

• 先运行 try 里面的代码;

• 如果执行过程中发生错误,程序不会直接终止,会跳到对应的 except 代码块执行,执行完成后继续运行后续代码。

举个很常见的例子:我们编写代码让用户输入数字进行运算,当用户随意输入文字、符号等非数字内容时。不使用 try‑except 的情况下,程序会直接抛出 ValueError (值错误)报错并强制终止运行。

加上异常处理后,我们可以自定义友好的提示文字,提醒用户输入格式有误,程序不会闪退,能够正常继续运行。

try:    num = int(input('请输入一个整数:'))    print(num)except ValueError:    print('输入的不是整数!请重新运行程序。')

二、三种常用写法,用好异常处理

① 捕获多种指定异常

程序运行时会出现不同类型错误,我们可以分开捕获,针对不同错误给出对应的提示。

try:    语句块    #放置可能报错的代码except ValueError:    语句块    #处理值错误,例如输入文本却要求数字except ZeroDivisionError:    语句块    #处理除数为0的错误except FileNotFoundError:    语句块    #处理文件不存在的错误

分开捕获异常的好处是,我们可以针对每一类错误给出明确提示,方便用户理解哪里出了问题。

② 捕获全部异常

如果你不想区分错误类型,可以直接写不带异常类型的 except。

try:    语句块except:    语句块

但是不建议这样写,因为这种写法不会输出错误详情,出 bug 的时候很难定位问题。

更推荐下面这种写法:

try:    语句块except Exception as e:    print(f"发生未知错误:{e}")

Exception 可以捕获绝大多数异常,同时把错误详情保存到变量e,打印就能看到详细报错信息——既安全,又清晰。

知识点提醒:except Exception 不会捕获系统退出类异常,比如KeyboardInterrupt(键盘中断),这类异常需要单独写 except 捕获。

③ else 和 finally 的使用

else:当try里的代码完全没有出错时执行

finally:无论是否出错,最后都会执行(适合做清理工作)

try:    语句块    #主要业务代码except 异常类型:    语句块    #出现异常时执行else:    语句块    #try内代码完全没有报错,才会执行这里finally:    语句块    #无论是否发生异常,这部分代码一定会执行,             #适合清理工作,比如关闭文件、断开连接等

二者搭配可以让代码逻辑更完整、程序运行更规范,避免出现资源未关闭、流程不完整等问题。有了它们,你的程序就能做到 “有始有终”。

三、实战:编写带异常捕获的计算器

结合上面所有知识点,我们来实现一个计算器。可以处理非法数字、除零、用户强制中断等情况,不会轻易崩溃。

大家可以自行测试这几种场景:

• 输入文本代替数字,触发ValueError;

• 第二个数字输入 0 做除法,触发ZeroDivisionError;

• 按下键盘 Ctrl+C,触发KeyboardInterrupt实现退出;

• 其他意料之外的问题,会被最后的 Exception 捕获。

以上就是本期全部内容。

拜拜👋,我们下期见!

最新文章

随机文章