python学习笔记8--- 错误和异常

📅 发布时间:2026/8/29 6:43:30
python学习笔记8--- 错误和异常 第10章 错误和异常10.1 错误和异常的介绍Python是一门解释型语言,只有在程序运行后才会执行语法检查。所以,只有在运行或测试程序时,才会真正知道该程序能不能正常运行。Python有两种错误很容易辨认:语法错误和异常。10.1.1 语法错误程序解析时遇到的语法错误。""" 演示语法错误 """print(以上代码有语法错误:File "D:\shangguigu\PythonProject\chapter10\p01_syntax_error.py", line 4 print( ^ SyntaxError(语法错误): '(' was never closed10.1.2 异常Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。大多数的异常都不会被程序处理,都以错误信息的形式打印出来,错误信息的前面部分显示了异常发生的上下文,并以调用栈的形式显示具体信息。""" 演示异常 """result=3/0print(result)以上代码语法正确,但是运行报错:Traceback(most recent call last):File"D:\shangguigu\PythonProject\chapter10\p02_exception_error.py",line4,inmoduleresult=3/0~~^~~ZeroDivisionError:division by zero(除数为0的异常)10.2 异常处理对异常进行处理并不是将错误规避了,而是当程序运行的时候,出现错误的时候提供解决方案,不终止程序,可以让程序继续执行。10.2.1 try except可以使用 try except 语句来捕获异常并处理。语法格式:try:可能发生异常的代码except异常类型1:异常处理的代码except异常类型2:异常处理的代码except(异常类型3,异常类型4,异常类型5):异常处理的代码except:异常处理的代码如果try没有发生异常,程序会忽略except中的代码,继续向下执行。如果try发生了异常,会忽略try中剩余代码,根据异常类型匹配到相应的 except 并执行其中的代码。如果try发生了异常,且异常类型无法和任何except匹配,也没有独立的except:分支,异常将向外传递。一个except可以同时处理多个异常,将这些异常放在一个元组中。最后一个 except 可以忽略异常类型,它将被作为通配符使用。演示案例""" 异常处理 """whileTrue:try:a=int(input("请输入被除数:"))b=int(input("请输入除数:"))print(f"{a}/{b}={a/b}")breakexcept(ValueError,TypeError):print("必须输入整数")exceptZeroDivisionError:print("除数不能为0")except:print("未知错误")print("End")10.2.2 获取异常描述信息语法格式:try:可能发生异常的代码except异常类型1as变量名1:异常处理的代码except异常类型2as变量名2:异常处理的代码except(异常类型3,异常类型4,异常类型5)as变量名3:异常处理的代码except:异常处理的代码except的异常类型后面加as 变量名,当发生这个类型的异常时,异常对象就会被赋值给这个变量。单独的except后面不能加变量名。打印traceback.print_exc()可以打印异常的详细信息示例代码:""" 异常处理 """importtracebackwhileTrue:try:a=int(input("请输入第一个数字:"))b=int(input("请输入第二个数字:"))print(f"{a}/{b}={a/b}")breakexceptValueErrorase:# traceback.print_exc() # 打印异常的详细信息print("输入错误,请重新输入。异常信息是:",e)exceptZeroDivisionErrorase:print("除数不能为0。异常信息是:",e)except:print("未知错误")print("End")10.2.3 else可选地将else放在所有except之后。如果try中代码没有发生异常,将执行 else 中的代码。语法格式:try:可能发生异常的代码except异常类型1【as变量名1】:#【as 变量名1】表示可选的异常处理的代码