Python 基础 - 第十一节
📋 本节要点
| 知识点 | 说明 |
|---|---|
try |
尝试执行可能出错的代码 |
except |
捕获异常并处理 |
else |
try 正常执行完毕时执行 |
finally |
不论是否异常都会执行 |
raise |
主动抛出异常 |
| 异常类型 | 常见的错误类型 |
1. 异常概述
异常是程序在执行过程中发生的错误。Python 提供了异常处理机制,可以让程序在遇到错误时不会直接崩溃,而是进行合理的处理。
# 可能出错的代码
num = int(input("请输入一个数字:"))
print("你输入的数字是:", num)
如果用户输入的不是数字,程序会报错并终止。
2. try-except 基本语法
try:
可能出错的代码
except:
处理错误的代码
try:
num = int(input("请输入一个数字:"))
print("你输入的数字是:", num)
except:
print("输入错误,请输入一个有效的数字!")
运行示例(输入 abc):
请输入一个数字:abc
输入错误,请输入一个有效的数字!
3. 捕获指定异常类型
不同的错误会引发不同的异常类型,我们可以针对性地处理。
try:
num = int(input("请输入一个数字:"))
result = 10 / num
print("10 /", num, "=", result)
except ValueError:
print("输入错误,请输入一个有效的数字!")
except ZeroDivisionError:
print("不能除以零!")
常见异常类型:
-ValueError:类型转换错误
-ZeroDivisionError:除数为零
-IndexError:索引越界
-KeyError:字典键不存在
-FileNotFoundError:文件不存在
4. except 绑定异常变量
可以使用 as 获取异常的具体信息。
try:
num = int(input("请输入一个数字:"))
print("你输入的数字是:", num)
except ValueError as e:
print("输入错误!具体原因:", e)
5. try-except-else 结构
else 子句在 try 代码块正常执行完毕(没有发生异常)时才会执行。
try:
num = int(input("请输入一个数字:"))
except ValueError:
print("输入错误!")
else:
print("输入成功,数字是:", num)
6. try-except-finally 结构
finally 子句不论是否发生异常,都会执行。通常用于清理工作。
try:
f = open("test.txt", "r")
content = f.read()
print(content)
except FileNotFoundError:
print("文件不存在!")
finally:
print("无论是否出错,这里都会执行")
7. raise 主动抛出异常
可以使用 raise 关键字主动抛出异常。
def divide(a, b):
if b == 0:
raise ValueError("除数不能为零!")
return a / b
try:
result = divide(10, 0)
except ValueError as e:
print("发生错误:", e)
运行结果:
发生错误: 除数不能为零!
8. 实战案例:登录验证
def login():
username = input("请输入用户名:")
password = input("请输入密码:")
if username == "" or password == "":
raise ValueError("用户名和密码不能为空!")
if len(password) < 6:
raise ValueError("密码长度不能少于6位!")
return True
try:
login()
print("登录成功!")
except ValueError as e:
print("登录失败:", e)
下一节预告:文件操作基础
评论区
0 条暂时还没有评论,欢迎来抢沙发。