Python零基础入门 第十章:异常处理 本章目标理解异常的概念和作用掌握try-except基本异常处理结构掌握多个异常的处理方法掌握else和finally子句的使用掌握主动抛出异常的方法了解自定义异常的创建能够编写健壮的、能处理错误的程序 1. 异常处理概述1.1 什么是异常异常是程序运行时发生的错误,会导致程序中断执行。常见的异常有:除以零错误、索引越界错误、键不存在错误、类型错误等。如果不处理异常,程序会直接崩溃,显示错误信息,影响用户体验。 示例: 除以零错误 print(10 / 0) 会抛出IndexError异常 键不存在错误 d = {"name": "张三"} print(d["age"]) 无论是否发生异常,都会关闭文件if 'f' in locals():f.close() 5. 主动抛出异常使用raise语句可以主动抛出异常,用于在特定条件下终止程序并提示错误。语法格式:raise 异常类型("错误信息") 示例代码:def divide(a, b):if b == 0:raise ZeroDivisionError("除数不能为零")return a / b try:divide(10, 0)except ZeroDivisionError as e:print(f"错误:{e}") 6. 自定义异常可以通过继承Exception类创建自定义异常,用于处理程序中特定的错误。语法格式:class 自定义异常名(Exception):pass 示例代码: 自定义年龄异常 class AgeError(Exception):pass def set_age(age):if age < 0 or age > 150:raise AgeError("年龄必须在0到150之间")print(f"年龄设置为:{age}") try:set_age(200)except AgeError as e:print(f"错误:{e}") 7. 综合实战:健壮的计算器程序在之前的计算器程序基础上加入异常处理,处理各种可能的错误。def calculator():while True:try:num1 = float(input("请输入第一个数字:"))num2 = float(input("请输入第二个数字:"))operator = input("请输入运算符(+、-、、/):")if operator == "+":result = num1 + num2elif operator == "-":result = num1 - num2elif operator == "":result = num1 * num2elif operator == "/":result = num1 / num2else:raise ValueError("不支持的运算符")print(f"计算结果:{num1} {operator} {num2} = {result}")breakexcept ValueError as e:print(f"输入错误:{e},请重新输入")except ZeroDivisionError:print("错误:除数不能为零,请重新输入")except Exception as e:print(f"发生未知错误:{e},请重新输入") calculator() 8. 本章总结9. 异常是程序运行时发生的错误,不处理会导致程序崩溃10. 使用try-except语句捕获和处理异常11. 可以使用多个except块分别处理不同类型的异常12. else子句在没有异常时执行,finally子句无论是否有异常都会执行13. 使用raise语句可以主动抛出异常14. 可以通过继承Exception类创建自定义异常15. 异常处理可以提高程序的健壮性和用户体验16. 课后练习17. 编写程序,让用户输入一个文件名,读取并打印文件内容,处理文件不存在的异常18. 编写程序,让用户输入两个整数,计算它们的商,处理输入错误和除以零的异常19. 编写一个函数,接收一个列表和一个索引,返回对应位置的元素,处理索引越界异常20. 自定义一个密码强度异常,当用户输入的密码长度小于6位时抛出该异常 有任何问题评论区留言,我会一一解答!下一章讲Python的面向对象编程基础。