Python 常见内置异常类型大全

文章目录

    • 前言
    • 一、先搞懂最核心的问题:到底什么是Python异常?
    • 二、新手最高频踩坑的10类内置异常(必看)
      • [2.1 ZeroDivisionError:除零错误](#2.1 ZeroDivisionError:除零错误)
      • [2.2 NameError:名称错误](#2.2 NameError:名称错误)
      • [2.3 TypeError:类型错误](#2.3 TypeError:类型错误)
      • [2.4 IndexError:索引错误](#2.4 IndexError:索引错误)
      • [2.5 KeyError:键错误](#2.5 KeyError:键错误)
      • [2.6 ValueError:值错误](#2.6 ValueError:值错误)
      • [2.7 AttributeError:属性错误](#2.7 AttributeError:属性错误)
      • [2.8 ImportError / ModuleNotFoundError:导入错误](#2.8 ImportError / ModuleNotFoundError:导入错误)
      • [2.9 FileNotFoundError:文件不存在错误](#2.9 FileNotFoundError:文件不存在错误)
      • [2.10 UnicodeDecodeError / UnicodeEncodeError:编码错误](#2.10 UnicodeDecodeError / UnicodeEncodeError:编码错误)
    • 三、Python其他常用内置异常类型
      • [3.1 语法与缩进相关异常](#3.1 语法与缩进相关异常)
      • [3.2 迭代与循环相关异常](#3.2 迭代与循环相关异常)
      • [3.3 操作系统与权限相关异常](#3.3 操作系统与权限相关异常)
      • [3.4 其他常用异常](#3.4 其他常用异常)
    • 四、新手必看:异常处理的正确姿势
      • [4.1 异常处理的基本语法](#4.1 异常处理的基本语法)
      • [4.2 新手异常处理的3个大忌](#4.2 新手异常处理的3个大忌)
    • 五、最后说几句心里话

P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

前言

兄弟们,先问个扎心的问题:你写Python代码的时候,是不是经常刚点运行,控制台就唰一下红一大片,一堆英文报错怼脸上?本来想写个AI智能体的小脚本,结果连第一步数据读取都跑不通;本来想爬个行业数据,结果刚发请求就崩了;甚至连写个最简单的计算器,都能给你报个错。

更离谱的是,很多新手朋友看到报错第一反应不是看异常类型,而是直接整段复制去百度,结果搜出来的答案五花八门,改来改去不仅没解决问题,反而越改坑越多,最后直接心态崩了,把键盘一摔:这破代码我不写了!

其实我搞了二十多年AI开发,见过太多开发者从入门到放弃,就是栽在了"异常报错"这一关。很多人觉得异常是洪水猛兽,是程序跟你作对,其实大错特错!Python的异常,根本不是来搞你的,而是来帮你的!

这就好比你开车上路,仪表盘上的故障灯亮了,不是车要当场爆炸把你送走,而是它在告诉你:"兄弟,机油不够了/水箱高温了/轮胎没气了,赶紧停一下处理,不然要出大事!" Python的异常,就是你代码里的"仪表盘故障灯",每一种异常类型,都精准告诉你:你的代码到底哪里出了问题,该往哪个方向修。

很多教程讲异常,上来就按字母顺序堆一堆异常类型,干巴巴的跟字典似的,看完就忘,别说新手了,我一个老开发看了都头大。所以今天这篇文章,我就用大白话+生活段子+高频踩坑案例,把Python所有常用的内置异常类型给你讲得明明白白,哪怕你只有高中文化,刚学Python三天,也能看懂,看完之后再遇到报错,再也不用慌慌张张百度,一眼就能定位问题!

对了,本文所有案例都是基于2026年最新的Python 3.13稳定版,所有异常类型都是官方内置的标准类型,没有任何花里胡哨的自定义内容,不管你是写传统Python开发、数据处理,还是现在最火的AI智能体开发、大模型应用开发,都能用得上,建议先点赞收藏,免得下次遇到报错找不到了。

一、先搞懂最核心的问题:到底什么是Python异常?

首先,很多新手会把"语法错误"和"运行时异常"搞混,这里我一句话给你掰扯清楚,再也不会混为一谈:

  • 语法错误(SyntaxError):相当于你连车钥匙都插反了,根本拧不动,发动机连火都打不着。程序连启动都启动不了,直接在编译阶段就给你毙了。比如你写if语句忘了加冒号、括号没配对、缩进错了,这些都是语法错误,Python根本不给你运行的机会。
  • 运行时异常:相当于你车钥匙插对了,发动机也打着了,顺利开上路了,结果开着开着,要么没油了,要么爆胎了,要么前面路断了,车开不下去了。程序能正常启动,但是运行到某一行的时候,出了无法继续执行的问题,这时候就会抛出异常。

举个最简单的例子,大家一眼就能看懂:

python 复制代码
# 这是语法错误,if后面忘了加冒号,程序根本跑不起来
if 1>0
    print("对的")

# 这是运行时异常,语法没问题,程序能启动,但是运行到第二行就崩了
a = 10
b = 0
print(a/b)

很多新手刚学Python的时候,天天被这两个问题搞疯,其实只要记住这个开车的类比,瞬间就能分清楚。

接下来再给大家讲一下Python异常的继承体系,不用记那些复杂的层级,只需要记住核心逻辑就行。Python的异常体系就像动物分类:

  • 最顶层的BaseException是"动物"这个总纲,所有异常都是从它衍生出来的;
  • 我们平时开发中99.9%会遇到的异常,都是它的子类Exception下面的,Exception就相当于"脊椎动物",我们平时开车遇到的几乎所有车辆故障,都属于这个范畴;
  • BaseException下面还有一些特殊的异常,比如SystemExit(程序退出)、KeyboardInterrupt(键盘中断,比如你按了Ctrl+C),这些就相当于"车子直接报废要销毁"这种极端情况,我们平时写代码几乎不会去处理它们。

这个体系有什么用?用处大了!很多新手写异常处理的时候,上来就写个except:捕获所有异常,结果程序崩了都不知道哪里出了问题,正确的做法是捕获具体的异常类型,这个我们后面会详细讲。

二、新手最高频踩坑的10类内置异常(必看)

我统计过,新手写Python代码,90%的报错都来自下面这10类异常,把它们搞懂了,你就能解决日常开发中绝大多数的报错问题,再也不用一看到红屏就慌。

2.1 ZeroDivisionError:除零错误

  • 通俗解释:你非要拿一个数除以0,数学上就不成立,Python直接给你罢工了。
  • 生活类比:你买了10个西瓜,要分给0个人,问每个人分几个?这问题本身就有病,谁听了都得懵。
  • 高频踩坑场景
    1. 写计算器的时候,用户输入了除数为0,没做前置判断;
    2. 做数据统计的时候,分母是计算出来的动态值,比如计算用户活跃度,当样本数为0的时候直接相除;
    3. AI开发里,计算损失函数的时候,批次样本数为0,导致除零报错;
    4. 电商后台计算转化率、退货率的时候,基数为0没做处理,导致线上故障。

报错&正确处理代码示例

python 复制代码
# 报错代码
a = 100
b = 0
print(a / b)

# 正确处理
a = 100
b = 0
if b != 0:
    print(a / b)
else:
    print("除数不能为0,请检查输入数据")

别小看这个错误,看着简单,但是我见过太多上线的项目栽在这上面。2025年还有个知名电商平台的后台,因为新用户注册数为0,计算新用户转化率的时候直接除零,导致整个数据看板全线崩溃,运营和技术连夜加班抢修,就因为少了一个简单的非零判断,细节决定生死,这话一点都不假。

2.2 NameError:名称错误

  • 通俗解释:你用了一个Python根本不认识的名字,要么是变量/函数没定义就用,要么是名字拼错了。
  • 生活类比:你去奶茶店,对着店员喊"给我来一杯蜜雪冰城的芋泥波波奶茶",店员直接懵了:"兄弟,我们这里是喜茶,没有这个东西";或者你本来想点"芋泥波波奶茶",结果嘴瓢说成了"芋泥波波奶查",店员也不知道你要啥。
  • 高频踩坑场景
    1. 变量名拼错了,比如把user_name写成了user_nmae,把count写成了conut,手速越快越容易犯这个错;
    2. 变量在使用之后才定义,比如先print(a),再写a=10,顺序搞反了;
    3. 调用函数的时候,函数名拼错了,或者函数还没写就提前调用;
    4. 导入模块的时候,没导入就直接用里面的方法,比如没import pandas就直接用pd.read_csv

报错&正确处理代码示例

python 复制代码
# 报错代码1:变量没定义就用
print(age)
age = 18

# 报错代码2:变量名拼错
user_name = "张三"
print(user_nmae)

# 正确写法
age = 18
print(age)

user_name = "张三"
print(user_name)

这个错误可以说是新手TOP1的报错,没有之一!我带过的实习生,10个里面有8个每天都要犯好几次这个错,写代码的时候手速太快,名字拼错了,找半天找不到问题,急得满头大汗。其实解决方法特别简单,只要看报错里提示的名字,和你定义的名字对比一下,一秒钟就能找到问题。

2.3 TypeError:类型错误

  • 通俗解释:你用了错误的数据类型去做不支持的操作,相当于拿螺丝刀去切菜,拿菜刀去拧螺丝,工具类型不对,根本干不了这个活。
  • 生活类比:你去超市买东西,结账的时候,收银员说一共100块,你拿了一张白纸给人家,说"这是我画的100块",人家肯定不收,因为类型不对,人民币才是支持的支付类型。
  • 高频踩坑场景
    1. 字符串和数字直接相加,比如print("我的年龄是" + 18),18是数字,不能直接和字符串拼接;
    2. 调用函数的时候,传的参数类型不对,比如函数要求传数字,你传了个字符串;
    3. 对不支持迭代的类型做循环,比如for i in 123:,数字123不能迭代;
    4. AI开发里,把numpy数组和普通列表直接做运算,类型不匹配导致报错。

报错&正确处理代码示例

python 复制代码
# 报错代码1:字符串和数字直接拼接
print("我的年龄是" + 18)

# 报错代码2:参数类型不对
def add(a, b):
    return a + b
add(10, "20")

# 正确写法
print("我的年龄是" + str(18))
add(10, int("20"))

这个错误是新手第二高频的报错,本质是对Python的数据类型不熟悉。很多新手会把TypeError和后面要讲的ValueError搞混,这里我一句话给你分清楚,再也不会乱:

  • TypeError类型不对,这个活根本不能干,比如你要拧螺丝,拿了个菜刀,工具类型完全错了;
  • ValueError类型对了,但是值不对,这个活干不了,比如你拿了个螺丝刀,但是型号不对,螺丝是十字的,你拿了个一字的,类型对,但是值不匹配。

2.4 IndexError:索引错误

  • 通俗解释:你访问的序列(列表、元组、字符串等)的索引超出了范围,相当于人家只有3个抽屉,你非要拉第4个抽屉,根本不存在。
  • 生活类比:你去电影院看电影,买的是3号厅5排6座的票,结果你非要去5排100座,人家这个厅根本没有这个座位,检票员直接给你拦下来了。
  • 高频踩坑场景
    1. 列表只有3个元素,索引是0、1、2,你非要访问list[3]
    2. 循环的时候,索引范围算错了,比如for i in range(len(list)+1):,导致越界;
    3. 处理AI模型返回的结果列表的时候,没判断列表是否为空,就直接取第一个元素list[0],空列表直接报IndexError
    4. 字符串切片的时候,索引超出长度,虽然切片不会报错,但是直接访问单个字符会报错。

报错&正确处理代码示例

python 复制代码
# 报错代码
name_list = ["张三", "李四", "王五"]
print(name_list[3])

# 正确写法
name_list = ["张三", "李四", "王五"]
index = 3
if index < len(name_list):
    print(name_list[index])
else:
    print(f"索引{index}超出范围,列表最大索引是{len(name_list)-1}")

这里必须给新手敲个警钟:Python的序列索引是从0开始的!不是从1开始的! 这个坑我见过无数新手踩,学了半个月Python,还以为列表第一个元素是索引1,结果天天报IndexError,这个一定要记死了,刻在DNA里!

2.5 KeyError:键错误

  • 通俗解释:你访问字典里不存在的键,相当于你去酒店开房,房卡是302的,你非要去开404的房门,根本打不开。
  • 生活类比:你去快递站取快递,报了个取件码,结果快递员查了半天,说"我们这里没有这个取件码的快递",你拿错取件码了,自然取不到快递。
  • 高频踩坑场景
    1. 字典里没有这个key,你非要直接访问dict[key]
    2. 处理接口返回的JSON数据的时候,没判断字段是否存在,就直接取值,比如大模型返回的JSON,有时候少了某个字段,直接取就报错;
    3. 处理CSV/Excel数据的时候,列名拼错了,用pandas取值的时候报KeyError
    4. 循环字典的时候,用了不存在的key去取值。

报错&正确处理代码示例

python 复制代码
# 报错代码
user_info = {"name": "张三", "age": 18}
print(user_info["gender"])

# 正确写法1:先判断key是否存在
user_info = {"name": "张三", "age": 18}
if "gender" in user_info:
    print(user_info["gender"])
else:
    print("性别字段不存在")

# 正确写法2:用get方法,不存在返回默认值(推荐)
print(user_info.get("gender", "未知"))

这个错误在2026年的AI开发、接口开发里太常见了!现在大家写智能体、调用大模型API,几乎天天都要和JSON数据打交道,很多新手拿到大模型返回的结果,不做任何判断就直接硬取值,结果大模型偶尔抽风少返回了一个字段,程序直接崩了。所以一定要养成用get方法取值的习惯,或者先判断key是否存在,别直接硬取,不然线上故障分分钟找上门。

2.6 ValueError:值错误

  • 通俗解释:你传的参数类型是对的,但是值是不合法的,相当于你去奶茶店点单,类型是对的(都是奶茶),但是你要的糖度是"100分糖",人家最多只有全糖,这个值不支持,做不出来。
  • 生活类比:你去火车站买票,跟售票员说"我要一张今天去火星的高铁票",售票员说"我们有高铁票这个类型,但是没有去火星的这个车次,这个值不对"。
  • 高频踩坑场景
    1. 类型转换的时候,值不合法,比如int("abc"),字符串abc不能转成整数;
    2. 给函数传参数的时候,类型对,但是值不在范围内,比如range(10, 1),结束值比起始值小,又没给步长;
    3. 字符串处理的时候,用了不存在的子串找索引,比如"abc".index("d")
    4. 数据处理的时候,给模型传了超出范围的值,比如要求输入0-1之间的概率值,你传了2,导致报错。

报错&正确处理代码示例

python 复制代码
# 报错代码
age = int("十八岁")
print(age)

# 正确写法
age_str = "18"
if age_str.isdigit():
    age = int(age_str)
    print(age)
else:
    print("请输入合法的数字")

还是那句话,TypeError管类型,ValueError管值,分清楚这两个,你就超过了80%的Python新手。

2.7 AttributeError:属性错误

  • 通俗解释:你访问了一个对象根本没有的属性或方法,相当于你对着一个电动车,非要按汽车的油门踏板,人家电动车根本没有这个东西。
  • 生活类比:你买了个普通的老年机,非要对着它喊"嘿Siri",人家老年机根本没有Siri这个功能,你喊破喉咙也没用。
  • 高频踩坑场景
    1. 字符串、列表的方法名拼错了,比如把list.append()写成了list.appen(),把str.upper()写成了str.uper()
    2. 变量的类型和你想的不一样,比如你以为是个列表,结果是个None,然后调用append方法,直接报错;
    3. 导入的模块里没有这个方法,你非要调用;
    4. 自定义的类里没有这个属性,你非要访问。

报错&正确处理代码示例

python 复制代码
# 报错代码1:方法名拼错
name_list = ["张三", "李四"]
name_list.appen("王五")

# 报错代码2:None类型调用方法
name_list = None
name_list.append("王五")

# 正确写法
name_list = ["张三", "李四"]
name_list.append("王五")
print(name_list)

name_list = []
if name_list is not None:
    name_list.append("王五")

这个错误最坑的场景,就是你拿到的变量是None!比如调用一个函数,函数执行失败返回了None,你没做判断,就直接调用方法,结果就报AttributeError: 'NoneType' object has no attribute 'xxx'。这个错误不管是新手还是老开发,都经常踩,所以一定要养成判断变量是否为None的习惯,尤其是调用函数、接口返回结果的时候。

2.8 ImportError / ModuleNotFoundError:导入错误

  • 通俗解释:你想导入的模块/包/函数根本找不到,要么是没安装这个包,要么是名字拼错了,要么是路径不对。
  • 生活类比:你想点个外卖,结果搜了半天,发现你所在的城市根本没有这个店,要么是店名打错了,要么是人家根本没在你这开分店。
  • 高频踩坑场景
    1. 没安装第三方包,就直接import,比如没装pandas就import pandas as pd
    2. 模块名拼错了,比如把pandas写成了pands,把numpy写成了nump;
    3. 导入自己写的py文件的时候,文件名不对,或者路径不对;
    4. 从模块里导入不存在的函数,比如from math import abc,math模块里根本没有abc这个函数。

这里给大家补充一下,ModuleNotFoundError是Python3.6之后新增的,是ImportError的子类,专门用来表示找不到模块的情况。遇到这个错误,三步走就能解决99%的问题:第一步先检查名字有没有拼错,第二步检查这个包有没有安装,第三步检查文件路径对不对。

2.9 FileNotFoundError:文件不存在错误

  • 通俗解释:你要打开的文件/文件夹根本不存在,要么是路径写错了,要么是文件被删了,要么是文件名拼错了。
  • 生活类比:你拿着地址去快递柜取快递,结果到了地方,发现这个快递柜根本就不存在,要么是地址写错了,要么是快递柜被拆了。
  • 高频踩坑场景
    1. 打开文件的时候,相对路径和绝对路径搞混了,路径写错了;
    2. 文件名拼错了,比如把data.csv写成了date.csv
    3. 文件被移动、删除或者重命名了,代码里还是原来的路径;
    4. 批量处理文件的时候,遍历的文件夹里有子文件夹,直接当文件打开,导致报错。

报错&正确处理代码示例

python 复制代码
# 报错代码
with open("data.csv", "r", encoding="utf-8") as f:
    print(f.read())

# 正确写法
import os
file_path = "data.csv"
if os.path.exists(file_path) and os.path.isfile(file_path):
    with open(file_path, "r", encoding="utf-8") as f:
        print(f.read())
else:
    print(f"文件{file_path}不存在,请检查路径")

2026年了,大家做AI开发、数据处理,几乎天天都要读取文件,很多新手写代码的时候,直接写个文件名就打开,根本不判断文件是否存在,结果程序一跑就崩。尤其是在服务器上运行的时候,路径和本地不一样,很容易出这个问题,所以一定要先判断文件是否存在,再打开。

2.10 UnicodeDecodeError / UnicodeEncodeError:编码错误

  • 通俗解释:文件的编码格式和你打开的时候用的编码格式不匹配,相当于你拿一本英文书,用中文翻译软件去扫,根本翻译不出来,编码不对。
  • 生活类比:你收到一封用日语写的信,非要找一个只会英语的翻译来给你翻译,人家根本看不懂,自然翻译不出来。
  • 高频踩坑场景
    1. 打开csv/txt文件的时候,编码格式不对,比如Windows上的gbk编码文件,用utf-8打开,直接报错;
    2. 写入文件的时候,字符串里有特殊字符,编码不支持;
    3. 爬虫爬取网页的时候,网页的编码和你解码用的编码不一样;
    4. 处理大模型返回的多语言内容的时候,编码不匹配导致报错。

这个错误是很多新手的噩梦,尤其是Windows用户,因为Windows默认的编码是gbk,而Python默认用utf-8,所以打开文件的时候,一定要指定encoding参数,比如open("data.txt", "r", encoding="utf-8"),如果utf-8不行,就试试gbk、gb2312,大部分问题都能解决。

三、Python其他常用内置异常类型

除了上面10个最高频的异常,还有一些不那么高频,但是开发中也经常会遇到的异常类型,这里给大家一次性讲清楚,免得遇到了不认识。

3.1 语法与缩进相关异常

  • SyntaxError:语法错误,前面讲过了,最常见的就是忘加冒号、括号不配对、关键字当变量名用,程序根本跑不起来;
  • IndentationError:缩进错误,Python是靠缩进区分代码块的,缩进错了直接报错,新手经常把空格和Tab混用,导致这个问题。

3.2 迭代与循环相关异常

  • StopIteration :迭代器没有更多元素了,比如用next()遍历迭代器,遍历完了还继续调用,就会报这个错;
  • RecursionError:递归深度超限,比如递归函数没有写退出条件,无限递归,Python默认的递归深度限制是1000层,超过就会报错。

3.3 操作系统与权限相关异常

  • OSError:操作系统相关的错误,是下面几个异常的父类,比如磁盘满了、文件路径太长等;
  • PermissionError:权限错误,比如要修改系统文件,没有管理员权限;要写入只读文件,没有写入权限;
  • InterruptedError:程序被中断了,比如运行的时候按了Ctrl+C;
  • IsADirectoryError :你把文件夹当成文件来打开了,比如open("test_folder", "r"),test_folder是个文件夹,不是文件。

3.4 其他常用异常

  • AssertionError :断言错误,assert语句的条件不成立的时候会报这个错,一般用来做代码调试,比如assert a > 0, "a必须大于0",如果a<=0,就会报这个错;
  • NotImplementedError:方法未实现错误,一般用在类的继承里,比如父类定义了一个方法,要求子类必须重写,子类没重写就调用,就会报这个错;
  • RuntimeError:运行时错误,其他类型都归不上的异常,都会用这个,比如运行时环境出问题了;
  • OverflowError:数值溢出错误,比如数字太大了,超出了Python的表示范围;
  • FloatingPointError:浮点数计算错误,一般出现在高精度的浮点数运算中,日常开发很少遇到;
  • KeyboardInterrupt:键盘中断异常,用户按了Ctrl+C终止程序的时候会触发,一般不用手动处理。

四、新手必看:异常处理的正确姿势

讲完了异常类型,肯定有兄弟会问:遇到异常,我该怎么处理?总不能让程序直接崩了吧?这里就给大家讲清楚Python异常处理的正确姿势,以及新手最容易踩的坑。

4.1 异常处理的基本语法

Python处理异常用的是try-except-else-finally语法,结构如下:

python 复制代码
try:
    # 这里写你要执行的代码,可能会抛出异常
    a = 10 / 0
    print(a)
except ZeroDivisionError:
    # 捕获到指定的异常,在这里处理
    print("除数不能为0")
except NameError as e:
    # 可以写多个except,捕获不同的异常,as e可以拿到异常的具体信息
    print(f"变量名错误:{e}")
else:
    # 代码没有抛出异常,正常执行完try里的代码后,会执行这里
    print("程序正常执行,没有出错")
finally:
    # 不管程序出不出错,都会执行这里,一般用来关闭文件、释放资源、关闭数据库连接
    print("不管出不出错,我都会执行")

4.2 新手异常处理的3个大忌

这里必须给大家敲警钟,很多新手写异常处理,不仅没起到作用,反而给自己挖了更大的坑,这3个大忌千万别犯:

大忌1:直接用裸except捕获所有异常

很多新手图省事,直接这么写:

python 复制代码
# 错误写法,千万别这么干!
try:
    a = 10 / 0
    print(user_name)
except:
    print("程序出错了")

这么写,不管代码里出了什么错,都会被捕获,你根本不知道代码到底哪里出了问题,甚至连你按Ctrl+C终止程序都会被捕获,到时候程序出了bug,找都找不到,纯纯给自己挖坑。正确的做法是只捕获你能处理的具体异常类型,不要捕获所有异常。

大忌2:捕获了异常,却什么都不做

还有些新手,捕获了异常,就写个pass,啥也不做:

python 复制代码
# 错误写法,千万别这么干!
try:
    a = 10 / 0
except ZeroDivisionError:
    pass

这么写,相当于你开车的时候,仪表盘故障灯亮了,你直接把故障灯拆了,眼不见心不烦,但是问题还在那里,迟早要出大事。捕获了异常,至少要打印一下错误信息,或者记录日志,知道哪里出了问题。

大忌3:滥用异常处理,用异常代替正常的逻辑判断

很多新手写代码,不管什么情况都用try-except,比如:

python 复制代码
# 不推荐的写法
try:
    print(name_list[3])
except IndexError:
    print("索引超出范围")

# 推荐的写法
if 3 < len(name_list):
    print(name_list[3])
else:
    print("索引超出范围")

异常处理是用来处理你无法提前预判的错误,比如网络请求超时、文件突然被删除、接口返回数据异常,而不是用来掩盖你代码里的低级错误。能提前用if判断的,就提前判断,不要滥用异常处理,不然代码可读性会变得极差,性能也会受影响。

五、最后说几句心里话

2026年了,AI行业发展得越来越快,Python作为AI开发的第一语言,越来越多的朋友冲着AI来学Python,但是很多人刚入门就被各种异常报错劝退了。

其实我搞了二十多年AI开发,到现在写代码还会经常遇到异常报错,但是我从来不会慌,因为我知道,报错不是坏事,它是你最好的老师。每一个异常,都是在告诉你代码的问题所在,帮你规避更大的线上故障。很多新手写代码,追求"开发的时候零报错",结果写的代码到处都是隐藏的坑,上线之后一跑就崩;反而那些开发的时候经常遇到报错,一个个解决掉的代码,上线之后更稳定。

很多教程把Python异常讲得高深莫测,其实根本没必要,异常就像生活里的红绿灯,不是来限制你的,是来保护你的。你只要记住每个异常对应的问题,遇到报错先看异常类型,再看报错的行号,99%的问题都能快速解决。

希望这篇文章能帮到正在学Python、学AI的兄弟们,如果你身边有刚入门的朋友,也可以把这篇文章转发给他,让他少走弯路。

P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

相关推荐
wuxinyan1232 小时前
Java面试题53:一文深入了解RAG(检索增强生成)核心概念
java·人工智能·机器学习·面试·rag
果汁华2 小时前
Claude Agent SDK Python:构建自主 AI 代理的官方引擎
开发语言·人工智能·python
User_芊芊君子2 小时前
从零入门!MySQL 约束、范式设计与联合查询核心精讲
数据库·人工智能·mysql
生物信息与育种2 小时前
JIPB | 一个表观多组学整合分析与可视化工具OmicsCanvas
运维·人工智能·算法·自动化·transformer
xinlianyq2 小时前
DeFi监管框架落地,美国认定多数代币为大宗商品
大数据·人工智能·区块链
小仙女的小稀罕2 小时前
实习工作例会口碑方案推荐 | 经筛选的实用选择参考
人工智能
未来智慧谷2 小时前
HappyHorse-1.0全球登顶:AI视频生成技术拆解与API接入指南(2026年4月)
人工智能·阿里云·ai视频·happyhorse
2601_957190902 小时前
打破传统娱乐局限,超元力无限方舟重塑沉浸体验新范式
人工智能·娱乐
user29876982706542 小时前
claude code 入口模块详细分析
人工智能