当前位置:首页>python>Python (14)错误与异常详解

Python (14)错误与异常详解

  • 2026-08-18 23:11:44
Python (14)错误与异常详解

Python 错误与异常详解

搞懂 Bug 的两种面孔,写出真正健壮的代码

Python 学习笔记 · 第十三篇

每个程序员都逃不掉和 Bug 打交道。不管是刚写完的新模块还是维护了五年的老系统,Bug 总会在你最不想它出现的时候冒出来。Python 把运行时的问题分为「错误」和「异常」两大类,理解它们的区别和各自的处理方式,是写出可靠代码的第一步。

第一部分:认识错误
01语法错误与逻辑错误编译期 vs 运行期

Python 中的「错误」主要分两种:语法错误是代码写法不对,解释器在执行前就能发现;逻辑错误是代码写法没问题,但业务逻辑有缺陷,只有跑起来才会暴露。

语法错误:解释器直接拒绝执行

比如循环语句漏了冒号,或者括号没闭合,这类问题在 PyCharm、VS Code 等编辑器里会直接标红提示,基本不会带到运行阶段。

Python - for 循环缺少冒号
for i in range(5)
    print(i)
输出结果
SyntaxError: expected ':'
逻辑错误:代码能跑,但结果不对

逻辑错误是真正让人头疼的部分——语法完全正确,程序也能正常跑完,但输出的结果就是不对。比如计算平均分时忘了处理空列表的情况:

Python - 空列表求平均值
def avg_score(scores):
    return sum(scores) / len(scores)

# 正常调用
print(avg_score([85, 90, 78]))  # 84.33

# 空列表调用 -> 程序崩溃
print(avg_score([]))
输出结果
ZeroDivisionError: division by zero

编辑器不会提醒你 len(scores) 可能为 0,这类问题只能靠编码经验和对业务场景的理解来预防——或者用异常处理来兜底。

💡 小贴士

语法错误是「写错了」,逻辑错误是「想错了」。前者靠工具帮你兜底,后者只能靠扎实的编码习惯和对边界条件的敏感度。测试工程师在设计用例时,应重点关注意后者——尤其空值、零值、越界等边界场景。

◆ ─────── ◆
第二部分:理解异常
02什么是异常程序运行中的意外

语法正确不代表万事大吉。程序在执行过程中,可能会遇到各种意料之外的情况:读取一个不存在的文件、访问列表中超出范围的索引、网络连接突然中断……这些运行期才暴露的问题,就是「异常」。

如果代码里没有对异常做处理,Python 解释器会直接打印一长串错误信息(Traceback)并终止程序。这在线上环境中显然是不可接受的——我们需要主动捕获异常,让程序在遇到问题时优雅地降级或恢复。

◆ ─────── ◆
03Python 异常继承体系BaseException 家族

Python 的所有异常都继承自 BaseException,它有四个直接子类,其中 Exception 是我们日常打交道最多的——几乎所有业务异常都继承自它。

异常继承树(简化版)
BaseException                    ← 所有异常的根
├── SystemExit                    ← sys.exit() 触发
├── KeyboardInterrupt             ← Ctrl+C 中断
├── GeneratorExit                 ← 生成器被关闭
└── Exception                     ← 业务异常的根(重点关注)
     ├── ArithmeticError          ← 算术类
     │    ├── ZeroDivisionError   │   除零
     │    └── OverflowError       │   数值溢出
     ├── LookupError              ← 查找类
     │    ├── IndexError          │   索引越界
     │    └── KeyError            │   字典键不存在
     ├── OSError                  ← 系统操作类
     │    ├── FileNotFoundError   │   文件不存在
     │    ├── PermissionError     │   权限不足
     │    └── TimeoutError        │   超时
     ├── TypeError                ← 类型不匹配
     ├── ValueError               ← 值不合法
     ├── NameError                ← 变量未定义
     ├── AttributeError           ← 属性不存在
     ├── ImportError              ← 导入失败
     ├── RuntimeError             ← 运行时错误
     │    └── RecursionError      │   递归过深
     ├── StopIteration            ← 迭代器耗尽
     └── Warning                  ← 警告类
          ├── DeprecationWarning  │   弃用警告
          └── UserWarning         │   用户自定义警告

这个继承关系非常实用:捕获父类异常时,所有子类异常都会被一并捕获。比如 except OSError 可以同时处理 FileNotFoundError 和 PermissionError

日常开发中最常遇到的异常,整理如下:

异常
触发场景
典型例子
TypeError
对不兼容类型执行操作
"a" + 1
ValueError
类型对但值不合法
int("abc")
IndexError
列表索引超出范围
[1,2][5]
KeyError
字典中找不到键
{}["name"]
ZeroDivisionError
除数为零
10 / 0
FileNotFoundError
打开不存在的文件
open("x.txt")
AttributeError
访问不存在的属性/方法
"a".append("b")
ImportError
模块导入失败
import notexist
NameError
使用未定义的变量
print(xyz)
RecursionError
递归层数超过上限
无终止条件递归

💡 小贴士

继承关系意味着你可以用父类异常做「兜底捕获」,但不建议滥用。比如 except Exception 会捕获所有业务异常,可能把本该暴露的问题也吞掉。精确捕获具体异常类型,才是最佳实践。

◆ ─────── ◆
第三部分:异常处理
04try / except 基本用法捕获异常

先看一个不处理异常的例子——解析用户输入的数字,如果输入的不是数字,程序直接崩掉:

① 不做异常处理 → 程序崩溃
Python - 未捕获异常
user_input = "abc"
number = int(user_input)
print(f"你输入的数字是: {number}")
输出结果
ValueError: invalid literal for int() with base 10: 'abc'
② 用 try/except 捕获 → 优雅降级
Python - 捕获异常
user_input = "abc"
try:
    number = int(user_input)
    print(f"你输入的数字是: {number}")
except ValueError:
    print("输入的不是有效数字,请重试")
输出结果
输入的不是有效数字,请重试

🔑 try/except 执行流程

① 先执行 try 块中的代码
② 如果没出异常,跳过所有 except,继续往下走
③ 如果出了异常,从上往下依次匹配 except 后面的异常类型
④ 匹配成功就执行对应 except 块,然后继续后续代码
⑤ 没匹配到任何 except,异常会向上层调用者传递
⑥ 如果最终无人处理,程序终止并打印 Traceback

③ 同时捕获多种异常

实际开发中,一段代码可能抛出多种异常,可以写多个 except 分支分别处理:

Python - 多异常捕获
def read_config(filepath):
    try:
        with open(filepath, 'r') as f:
            data = f.read()
        return int(data.strip())
    except FileNotFoundError:
        print("配置文件不存在,使用默认值")
        return 8080
    except ValueError:
        print("配置文件内容不是数字,使用默认值")
        return 8080
    except PermissionError:
        print("没有权限读取配置文件")
        return 8080

💡 小贴士

用 except ValueError as e 可以拿到异常对象,通过 e 访问错误详情,方便记录日志做问题排查。

◆ ─────── ◆
05else 与 finally完整异常处理结构

除了 try 和 except,Python 还提供了两个可选子句:else 和 finally,它们各自承担不同职责:

Python - 完整 try/except/else/finally
def safe_divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        print("except --> 除数不能为0")
    except TypeError:
        print("except --> 参数必须是数字")
    else:
        print(f"else --> 计算成功: {result}")
    finally:
        print("finally --> 计算结束\n")

# 测试三种情况
safe_divide(10, 2)    # 正常
safe_divide(10, 0)    # 除零异常
safe_divide(10, "x")  # 类型异常

① safe_divide(10, 2) — 正常流程

else --> 计算成功: 5.0
finally --> 计算结束

② safe_divide(10, 0) — 除零异常

except --> 除数不能为0
finally --> 计算结束

③ safe_divide(10, "x") — 类型异常

except --> 参数必须是数字
finally --> 计算结束

🔑 关键要点

① else:try 块没有抛出异常时才执行,适合放「成功后的后续操作」
② finally无论是否异常都会执行,适合放资源清理(关文件、断连接)
③ 顺序必须是:try → except → else → finally,不能调换

💡 小贴士

为什么用 else 而不直接把后续代码写在 try 里?因为如果把后续代码也放进 try,它抛出的异常也会被 except 捕获,可能导致误捕获。把成功路径放到 else 里,职责更清晰。

◆ ─────── ◆
06主动抛出异常raise 语句

有时候程序本身没出错,但业务逻辑不允许继续执行——比如用户传入了负数的年龄、注册时邮箱格式不对。这时可以用 raise 主动抛出异常,强制中断执行并通知调用者:

Python - raise 主动抛出异常
def set_age(age):
    if not isinstance(age, int):
        raise TypeError("年龄必须是整数")
    if age < 0 or age > 150:
        raise ValueError(f"年龄 {age} 不在合理范围内(0-150)")
    print(f"年龄设置成功: {age}")

# 正常调用
set_age(25)       # 年龄设置成功: 25

# 类型不对
set_age("25")     # TypeError: 年龄必须是整数

# 值不合理
set_age(-1)       # ValueError: 年龄 -1 不在合理范围内(0-150)

raise 的参数必须是一个异常实例或异常类。在实际项目中,合理使用 raise 可以把问题尽早暴露在调用链的上游,避免错误数据一路传递下去造成更难排查的问题。

◆ ─────── ◆
第四部分:自定义异常
07自定义异常类继承 Exception

内置异常覆盖了通用场景,但在中大型项目中,我们往往需要更精准的错误分类。比如一个测试平台,接口调用失败、用例数据格式错误、断言未通过,这些最好用不同的异常类型区分,方便定位问题。做法很简单——继承 Exception 即可:

Python - 自定义测试平台异常体系
# 自定义异常基类
class TestPlatformError(Exception):
    """测试平台异常基类"""
    def __init__(self, message, detail=None):
        self.message = message
        self.detail = detail
        super().__init__(self.message)

# 接口调用失败异常
class ApiCallError(TestPlatformError):
    """API 调用异常"""
    pass

# 用例数据格式异常
class CaseDataError(TestPlatformError):
    """测试用例数据异常"""
    pass

# 使用示例
def run_test_case(case):
    if not isinstance(case, dict):
        raise CaseDataError(
            "用例数据必须是字典类型",
            detail=f"实际类型: {type(case).__name__}"
        )
    if "url" not in case:
        raise CaseDataError("用例缺少必填字段: url")

    print(f"执行用例: {case.get('url')}")

# 测试
try:
    run_test_case("not a dict")
except CaseDataError as e:
    print(f"用例数据错误: {e.message}")
    if e.detail:
        print(f"详情: {e.detail}")
except ApiCallError as e:
    print(f"接口调用失败: {e.message}")
输出结果
用例数据错误: 用例数据必须是字典类型
详情: 实际类型: str

这个例子展示了实际项目中的典型做法:定义一个异常基类承载通用信息(message + detail),再派生子类区分具体错误类型。调用方可以精确捕获某个子类异常,也可以用基类做兜底捕获。

⚠️ 踩坑经验

千万别用 except: pass 或 except Exception: pass 来「静默」异常——这会让问题被隐藏,排查时完全找不到线索。正确做法是:捕获具体异常 → 记录日志 → 返回合理的默认值或重新抛出。

◆ ─────── ◆
08知识点总结核心回顾
知识点
核心语法
要点
语法错误
SyntaxError
编辑器即可检测,基本不会带到运行阶段
逻辑错误
ZeroDivisionError 等
运行时才暴露,需靠编码经验预防
异常捕获
try / except
精确捕获具体类型,避免裸 except
else 子句
else:
无异常时执行,放成功路径逻辑
finally 子句
finally:
必执行,放资源清理逻辑
主动抛出
raise ValueError(...)
业务校验不通过时主动中断
自定义异常
class XxxError(Exception)
继承 Exception,按业务分类

💡 给测试工程师的建议

1. 异常场景是测试用例的重要维度:空值、越界、类型不匹配、网络中断……正常流程通过不代表异常流程也稳
2. 自动化脚本必须做异常处理:一个接口超时不应该导致整条用例线全挂
3. 别用裸 except 吞异常except Exception as e 搭配日志记录,才能定位问题
4. finally 做资源释放:文件句柄、数据库连接、浏览器驱动,确保无论是否异常都能关闭

异常处理不是「可选技能」,而是写出可靠代码的基本功。记住核心原则:精确捕获、妥善处理、资源必释放。把这些习惯融入日常编码,你的程序会从一个「能跑的程序」变成一个「跑得稳的程序」。

Python 学习笔记系列 | 第十三篇

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-22 00:43:17 HTTP/2.0 GET : https://f.mffb.com.cn/a/508920.html
  2. 运行时间 : 0.163662s [ 吞吐率:6.11req/s ] 内存消耗:4,601.37kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cb83ae4717bdd1fed0927dfb0778735a
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000881s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000626s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002517s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.011268s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000599s ]
  6. SELECT * FROM `set` [ RunTime:0.000210s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000575s ]
  8. SELECT * FROM `article` WHERE `id` = 508920 LIMIT 1 [ RunTime:0.000461s ]
  9. UPDATE `article` SET `lasttime` = 1787330597 WHERE `id` = 508920 [ RunTime:0.015594s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000250s ]
  11. SELECT * FROM `article` WHERE `id` < 508920 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000961s ]
  12. SELECT * FROM `article` WHERE `id` > 508920 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.005750s ]
  13. SELECT * FROM `article` WHERE `id` < 508920 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.028331s ]
  14. SELECT * FROM `article` WHERE `id` < 508920 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002355s ]
  15. SELECT * FROM `article` WHERE `id` < 508920 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.022733s ]
0.165281s