当前位置:首页>python>Python 进阶(下)

Python 进阶(下)

  • 2026-08-18 23:11:51
Python 进阶(下)
📚 全栈开发学习系列
01 路线总览与环境搭建 ✅
02 Python 语法基础 ✅
03 Python 进阶(上):文件读写与模块系统 ✅
04 Python 进阶(下):异常处理与综合实战(当前篇)
05 C 语言与内存:指针、分配与释放
06 数据结构与算法:链表、栈与队列
07 Git 版本控制:分支、合并与冲突解决
08 Linux 命令行:文件、权限与进程管理

Python 进阶(下):异常处理与综合实战

让程序在错误面前不再崩溃,用 try/except 构筑防御体系
进阶篇异常处理综合实战
读完本篇你将能:理解 Python 异常的继承层级,用 try/except/else/finally 四段式结构捕获运行时错误,用 raise 主动抛出异常,编写自定义异常类,并完成一个健壮的 JSON 配置文件处理器——它能优雅处理文件缺失、格式错误、类型不匹配等各种意外情况。
📑 本文目录
01异常是什么:程序运行时的"警报系统"
02try/except:捕获异常的三种姿势
03完整结构:else 和 finally
04主动抛出异常:raise
05自定义异常:给错误起名字
06综合实战:健壮的配置文件处理器
07动手练习

01 异常是什么:程序运行时的"警报系统"

上一篇你学会了用 open() 读取文件。但如果文件不存在呢?程序会直接崩溃,抛出一堆红色文字。这就是异常(Exception)——程序运行时遇到的意外情况。

异常不是 bug,而是程序运行环境中的"合理意外":用户可能输错了路径,网络可能突然断开,磁盘可能满了。好的程序不会假装这些不会发生,而是提前准备好应对方案。

没有异常处理的程序

先看一个会崩溃的例子——读取一个不存在的配置文件:

Python
open("config.json""r")

运行结果——Python 抛出了 FileNotFoundError

终端输出
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'config.json'

这行报错信息包含三部分:错误类型(FileNotFoundError)、错误描述(No such file or directory)、涉及的文件路径(config.json)。Python 的异常信息非常详尽,学会阅读它就等于找到了问题的一半答案。

常见内置异常一览

Python 内置了大量异常类型,它们构成一棵继承树。所有异常的祖先都是 BaseException,日常 coding 最常遇到的是它的子类 Exception 的后代:

异常名
触发场景
示例代码
FileNotFoundError
打开不存在的文件
open("x.txt")
ValueError
值类型正确但内容非法
int("abc")
TypeError
对错误类型执行操作
"a" + 1
KeyError
字典中找不到键
d["missing"]
IndexError
列表索引越界
[1,2][10]
ZeroDivisionError
除数为零
1 / 0
json.JSONDecodeError
JSON 格式解析失败
json.loads("{bad")
💡 小贴士
异常名的命名规律:都以 Error 或 Exception 结尾。看到这个名字就知道出了什么类型的问题。阅读报错信息时,先看最后一行的异常名,再看前面的调用栈定位发生位置。

02 try/except:捕获异常的三种姿势

知道了异常是什么,接下来学习怎么"接住"它。Python 用 try/except 结构把可能出错的代码包起来——就像在施工区域拉起安全网,即使有人坠落也不会摔伤。

姿势一:捕获特定异常

最推荐的做法——只捕获你预期可能发生的异常类型,让其他意外错误继续向上传播:

Python
1
2
3
4
5
6
7
8
9
try:
    f = open("config.json""r")
    content = f.read()
    f.close()
print(content)
except FileNotFoundError:
print("配置文件不存在,使用默认配置")
# 输出:配置文件不存在,使用默认配置

try 块中的代码正常执行则跳过 except;如果抛出 FileNotFoundError 则执行 except 块;如果是其他异常(如 PermissionError),不会被这个 except 接住,程序依然会崩溃——这正是我们想要的,因为权限问题不应该被静默忽略。

姿势二:捕获并获取异常信息

用 as 关键字把异常对象赋值给变量,可以打印更详细的错误信息:

Python
1
2
3
4
5
6
7
8
try:
    num = int("hello")
except ValueError as e:
print(f"转换失败:", e)
print(f"错误类型:"type(e).__name__)
# 输出:
# 转换失败: invalid literal for int() with base 10: 'hello'

姿势三:同时捕获多种异常

一个 try 块可能遇到多种错误。你可以用多个 except 分支分别处理,也可以用一个元组捕获多种异常:

Python
1
2
3
4
5
6
7
8
9
10
11
12
import json
try:
withopen("data.json"as f:
        data = json.load(f)
except FileNotFoundError:
print("文件不存在")
    data = {}
except json.JSONDecodeError as e:
print(f"JSON 格式错误:", e)
    data = {}
print(data)
⚠️ 常见错误
except: — 裸 except 会捕获所有异常(包括 KeyboardInterrupt、SystemExit),导致 Ctrl+C 都无法中断程序 
✓ 正确:except Exception: 只捕获普通异常,不拦截系统级退出信号 

except 分支的匹配顺序是从上到下,一旦匹配就不再往下检查。因此子类异常必须写在父类异常前面,否则永远不会被执行。例如 JSONDecodeError 是 ValueError 的子类,如果先写 except ValueError,后面的 except JSONDecodeError 永远无法触发。

03 完整结构:else 和 finally

try/except 只是异常处理的基础骨架。Python 还提供了 else 和 finally 两个可选块,组成完整的四段式结构。你可以把 try 想象成一次手术:try 是手术过程,except 是处理并发症,else 是手术成功的后续治疗,finally 是无论结果如何都要打扫手术室。

try
执行代码
except
出错时处理
else
成功后执行
finally
必做清理

四段式完整示例

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import json
try:
    f = open("data.json""r")
    data = json.load(f)
except (FileNotFoundError, json.JSONDecodeError) as e:
print(f"加载失败:{e}")
    data = {}
else:
print(f"成功加载 {len(data)} 个键")
    f.close()  # 成功时关闭文件
finally:
print("操作结束")
# 输出:操作结束
执行时机
是否可选
try
始终执行
必需
except
try 块抛出异常时
至少一个(或用 else)
else
try 块未抛出异常时
可选
finally
无论如何都执行
可选
💡 小贴士
else 块的作用是把"可能出错的代码"和"处理结果的代码"分开。如果把处理逻辑直接写在 try 块末尾,一旦处理逻辑本身出错也会被 except 捕获,导致错误被误判。else 块中的异常不会被同一个 except 捕获。

04 主动抛出异常:raise

前面学的是"被动接住"异常,现在学习"主动制造"异常。当函数收到的参数不合法时,与其让程序带着错误数据继续跑出莫名其妙的结果,不如立刻用 raise 抛出异常,把问题扼杀在摇篮里。

基本用法

Python
defset_age(age):
ifnotisinstance(age, int):
raise TypeError(f"年龄必须是整数,得到:{type(age).__name__}")
if age < 0or age > 150:
raise ValueError(f"年龄不合法:{age}")
return age

调用时的效果:

Python
set_age(25)    # 正常返回 25
set_age("二十")  # TypeError: 年龄必须是整数,得到:str
set_age(-1)    # ValueError: 年龄不合法:-1

异常重新抛出

有时候你需要在 except 中记录日志,然后把异常继续往上抛,让调用者决定怎么处理。直接用不带参数的 raise 即可:

Python
try:
    data = json.loads(raw_text)
except json.JSONDecodeError:
print(f"日志:JSON解析失败,原始内容:{raw_text[:50]}")
raise# 重新抛出当前异常
⚠️ 常见错误
raise "年龄不能为负数" — raise 只能抛出异常类或异常实例,不能抛出字符串 
✓ 正确:raise ValueError("年龄不能为负数")

05 自定义异常:给错误起名字

内置异常是通用工具,但项目中的错误往往有特定含义。比如"配置文件缺少必填字段"和"网络请求超时"是完全不同的问题,用 ValueError 一把抓住会丢失语义。自定义异常就是给特定错误起一个专属名字,让调用者能精确捕获。

定义方式

自定义异常只需继承 Exception 类:

Python
1
2
3
4
5
6
7
8
9
10
classConfigError(Exception):
"""配置文件相关的异常基类"""
pass
classMissingFieldError(ConfigError):
"""缺少必填字段"""
def__init__(self, field_name, config_path):
self.field_name = field_name
self.config_path = config_path
super().__init__(f"配置文件 {config_path} 缺少必填字段:{field_name}")

使用时,调用者可以选择精确捕获子类异常,也可以用基类一次性捕获整个家族:

Python
1
2
3
4
5
6
7
8
9
try:
    config = load_config("app.json")
except MissingFieldError as e:
print(f"缺少字段:{e.field_name}")
    config = get_default_config()
except ConfigError as e:
print(f"其他配置错误:{e}")
    config = get_default_config()
💡 小贴士
自定义异常的命名规范:以 Error 或 Exception 结尾(如 DatabaseError、TimeoutException)。继承时先建一个基类(如 AppError),再派生子类,调用者可以按需选择捕获粒度——粗粒度捕获 AppError 处理所有应用异常,细粒度捕获子类分别处理。

06 综合实战:健壮的配置文件处理器

前面学的所有知识——文件读写、JSON 解析、异常捕获、自定义异常、raise——将在这一节汇流成一个完整的实战项目。我们要写一个配置文件处理器,它能应对以下真实场景:配置文件不存在(返回默认值)、JSON 格式错误(提示修复)、必填字段缺失(精确报错)、字段类型错误(自动校验)。

完整代码

Python — config_handler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import json
import os
classConfigError(Exception):
"""配置处理异常基类"""
pass
classMissingFieldError(ConfigError):
"""必填字段缺失"""
def__init__(self, field, path):
super().__init__(f"{path} 缺少字段:{field}")
classFieldTypeError(ConfigError):
"""字段类型不匹配"""
def__init__(self, field, expected, got):
super().__init__(
f"字段 {field} 期望 {expected},得到 {got}")
defload_config(path, required_fields=None):
"""加载并校验JSON配置文件"""
    required_fields = required_fields or {}
try:
withopen(path, "r"as f:
            config = json.load(f)
except FileNotFoundError:
print(f"{path} 不存在,使用默认配置")
return {}
except json.JSONDecodeError as e:
raise ConfigError(f"{path} JSON格式错误:{e}")
for field, expected_type in required_fields.items():
if field notin config:
raise MissingFieldError(field, path)
ifnotisinstance(config[field], expected_type):
raise FieldTypeError(
                field, expected_type.__name__,
type(config[field]).__name__)
return config
defsave_config(path, config):
"""保存配置到JSON文件"""
withopen(path, "w"as f:
        json.dump(config, f, indent=2, ensure_ascii=False)
print(f"配置已保存到 {path}")

使用示例

Python
1
2
3
4
5
6
7
8
9
10
11
12
required = {"host"str"port"int}
try:
    cfg = load_config("app.json", required)
print(f"服务地址:{cfg['host']}:{cfg['port']}")
except MissingFieldError as e:
print(f"需要补充配置:{e}")
    cfg = {"host""127.0.0.1""port"8080}
save_config("app.json", cfg)
except ConfigError as e:
print(f"配置错误:{e}")
raise

这个处理器的设计逻辑:load_config 函数内部用 try/except 处理文件层面的错误(不存在、格式错误),用 raise + 自定义异常处理业务层面的错误(字段缺失、类型不匹配)。调用者根据需要选择捕获粒度——MissingFieldError 精确处理缺字段(可以自动补默认值),ConfigError 兜底处理所有配置问题。save_config 不需要 try/except,因为写入失败属于系统级问题,应该让异常向上传播。

💡 小贴士
实际项目中的配置管理更复杂——通常还需要支持环境变量覆盖(如 os.getenv("PORT", 8080))、配置热重载、多环境配置分离(dev/prod)。但核心的异常处理思路与本例一致:文件层用 try/except,业务层用自定义异常 + raise。

07 动手练习

✏️ 动手练习
🟢 基础验证
编写一个函数 safe_divide(a, b),用 try/except 捕获除零错误,返回计算结果或错误提示字符串。测试:safe_divide(10, 2) 返回 5.0,safe_divide(10, 0) 返回 "错误:除数不能为零"。
🟡 组合应用
扩展第 06 节的配置处理器,增加一个 update_config(path, key, value) 函数:先加载现有配置(用 load_config),修改指定字段,再保存(用 save_config)。要求处理以下情况:配置文件不存在时自动创建、key 参数不是字符串时抛出 TypeError、保存失败时打印错误但不崩溃。
🔴 开放挑战
设计一个简易的"重试装饰器" @retry(max_retries=3),被装饰的函数如果抛出异常会自动重试,最多重试 max_retries 次,全部失败后才抛出最后一次的异常。提示:需要了解 Python 装饰器语法(@函数名),结合 for 循环和 try/except 实现。思考:哪些异常值得重试(如网络超时),哪些不值得(如 ValueError)?
📖 知识回顾
异常继承层级try/except 捕获else/finallyraise 主动抛出自定义异常类异常重新抛出except 分支顺序JSON 配置处理器
下篇预告
05 C 语言与内存:指针、分配与释放
Python 的异常处理已掌握,下一篇切换到 C 语言,从指针开始理解内存地址、malloc/free 手动分配,以及内存泄漏的成因与检测。这是理解操作系统和底层安全的基础。
关注公众号获取更多内容

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 13:36:27 HTTP/2.0 GET : https://f.mffb.com.cn/a/509536.html
  2. 运行时间 : 0.682185s [ 吞吐率:1.47req/s ] 内存消耗:4,885.60kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2adf6ee019530a92340a722896c1a63a
  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.001362s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001460s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.056606s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.026795s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001811s ]
  6. SELECT * FROM `set` [ RunTime:0.007020s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001460s ]
  8. SELECT * FROM `article` WHERE `id` = 509536 LIMIT 1 [ RunTime:0.046826s ]
  9. UPDATE `article` SET `lasttime` = 1787290587 WHERE `id` = 509536 [ RunTime:0.058137s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.005291s ]
  11. SELECT * FROM `article` WHERE `id` < 509536 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.031732s ]
  12. SELECT * FROM `article` WHERE `id` > 509536 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.067649s ]
  13. SELECT * FROM `article` WHERE `id` < 509536 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010697s ]
  14. SELECT * FROM `article` WHERE `id` < 509536 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.080082s ]
  15. SELECT * FROM `article` WHERE `id` < 509536 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.116461s ]
0.685746s