当前位置:首页>python>《Python 从入门到精通》068|else 和 finally:异常处理的完整结构

《Python 从入门到精通》068|else 和 finally:异常处理的完整结构

  • 2026-07-02 00:16:40
《Python 从入门到精通》068|else 和 finally:异常处理的完整结构

上一章我们已经学会了 try...except,知道程序遇到异常时,不一定非要直接崩掉,也可以按照我们写好的逻辑去处理。

但如果你继续往下写代码,很快就会发现,只会 try...except 还不够。

因为程序里经常会有三种不同情况:

第一种,代码顺利执行,没有报错。 第二种,代码执行时出错了,需要处理异常。 第三种,不管有没有报错,最后总有一些收尾动作必须做。

比如:

文件读取成功后,要打印成功提示。 如果文件读取失败,要告诉用户失败原因。 无论成功还是失败,最后都想输出一句“本次操作结束”。

这时候,仅仅靠 try...except 就显得有点不够用了。 于是就有了两个非常实用的补充结构:else 和 finally

这一章,我们就把异常处理的完整结构一次讲清。

一、先看完整结构长什么样

最完整的写法,大概是这样:

try:    可能出错的代码except 异常类型:    出错后执行的代码else:    没出错时执行的代码finally:    不管出没出错都执行的代码

先不要急着记。 你先把它翻译成人话:

先试着执行 try 里的代码。 如果出错了,就去 except。 如果没出错,就去 else。 最后无论怎样,都会执行 finally

只要这四句人话你理解了,这一章其实就已经过了一半。

二、为什么还需要 else

很多初学者会问,既然 try 里本来就可以写正常逻辑,那为什么还需要 else

这个问题问得很好。

因为 else 的价值,不是让代码“能运行”,而是让代码“更清晰”。

先看一个没有 else 的例子:

try:    num = int(input('请输入一个整数:'))    print('转换成功')    print('结果是:', num)except ValueError:    print('输入格式错误')

这段代码当然没问题。 如果输入合法,就会打印成功信息和结果。 如果输入不合法,就会进入 except

但现在想一想,这里的 print('转换成功') 和 print('结果是:', num),它们其实是“只有在没出错时才该执行”的逻辑。

既然如此,把它们放进 else,结构会更清楚:

try:    num = int(input('请输入一个整数:'))except ValueError:    print('输入格式错误')else:    print('转换成功')    print('结果是:', num)

这样一来,代码的意图就很明确了:

try 只负责尝试执行可能出错的部分。except 只负责处理错误。else 只负责处理成功后的逻辑。

这就是 else 的核心价值。 它能把“正常成功后的逻辑”单独拎出来,让代码更有层次。

三、else 到底什么时候执行

这个点一定要记准。

else 只有在 try 里没有发生异常时才会执行。

也就是说,else 不是和 if...else 里的 else 一回事。 它不是表示“条件不成立”。 它表示的是:

这次尝试没有出错。

看一个小例子:

try:    result = 10 / 2except ZeroDivisionError:    print('除数不能为 0')else:    print('计算成功,结果是:', result)

输出结果:

计算成功,结果是: 5.0

因为这里没有异常,所以会进入 else

再看一个例子:

try:    result = 10 / 0except ZeroDivisionError:    print('除数不能为 0')else:    print('计算成功,结果是:', result)

输出结果:

除数不能为 0

这次由于发生了异常,所以 else 根本不会执行。

你可以把它记成一句很简单的话:

没报错,走 else。报错了,走 except。

四、else 最适合放什么代码

最适合放的,就是那些“依赖于 try 成功执行”的后续逻辑。

比如:

转换成功后的提示 文件读取成功后的处理 数据库查询成功后的展示 用户输入正确后的下一步流程

这样写的好处是,逻辑边界会很清楚。

try 只放有风险的动作。else 放成功后的正常动作。

例如:

try:    age = int(input('请输入年龄:'))except ValueError:    print('请输入正确的数字')else:    print('你的年龄是:', age)    print('明年你就是:', age + 1)

如果你把后面两句都塞在 try 里,程序也能跑。 但从表达上看,不如写进 else 清楚。

因为它们本身并不是“容易出错的转换动作”,而是“转换成功后才该执行的动作”。

这就是 else 的意义。 它让代码的职责划分更干净。

五、再说 finally,它才是真正的收尾区

如果说 else 处理的是“成功后的逻辑”,那 finally 处理的就是“无论如何都要做的收尾动作”。

这是它最核心的一点。

比如你去银行办业务。 办成功了,也要离开柜台。 办失败了,也要离开柜台。 这个“离开柜台”的动作,就很像 finally

再比如做文件处理。 读取成功,要告诉用户结束了。 读取失败,也要告诉用户结束了。 这句“本次读取结束”,就可以放在 finally 里。

看代码:

try:    num = int(input('请输入一个整数:'))    result = 100 / numexcept ValueError:    print('输入的不是整数')except ZeroDivisionError:    print('不能输入 0')finally:    print('程序执行结束')

无论用户输入什么,最后这句:

print('程序执行结束')

都会执行。

这就是 finally 的特点:

不管有没有异常,不管异常有没有被处理,它通常都会执行。

六、finally 为什么这么重要

因为现实里的很多资源,不是你想关就关,想不关就不关的。 它们需要被认真收尾。

比如:

文件要关闭 数据库连接要释放 网络连接要断开 临时状态要清理 提示信息要输出

你会发现,finally 的思路和前面学的 with 有点像。 本质上都是在做“收尾”和“资源管理”。

只不过 with 是更自动、更优雅的资源管理方式。 而 finally 是一种更通用的“最后一定做点什么”的机制。

也就是说:

with 很适合文件这种场景。finally 适合更广义的收尾逻辑。

七、看一个最完整的例子

下面这段代码,建议你认真读一遍:

try:    text = input('请输入一个整数:')    num = int(text)except ValueError:    print('输入格式错误')else:    print('转换成功,数字是:', num)finally:    print('本次输入处理结束')

这里一共分成四层。

第一层,try负责尝试把输入转成整数

第二层,except如果输入格式不对,就提示错误

第三层,else如果转换成功,就输出转换结果

第四层,finally不管成功失败,最后都打印结束语

这就是最完整、最标准的一套异常处理结构。

你不用每次都把四个部分全写上。 但你一定要知道,这四个部分各自负责什么。

八、执行顺序到底是什么

这个问题非常重要,很多人一开始会混。

正常情况下,顺序是:

先执行 try如果没出错,跳过 except接着执行 else最后执行 finally

如果出错了,并且被 except 捕获了,顺序就是:

先执行 try中途发生异常 跳到对应的 except执行完 except最后执行 finally

你可以简单记成:

成功时:try → else → finally出错时:try → except → finally

只要这个执行顺序理顺了,后面写复杂代码就不容易乱。

九、一个容易混淆的点:finally 不是“出错后才执行”

很多新手第一次看到 finally,会误以为它和 except 差不多,都是出了错才会走。

其实完全不是。

except 是出错才执行。finally 是不管出没出错,都会执行。

看这个例子:

try:    print('开始计算')    result = 10 / 2    print(result)except ZeroDivisionError:    print('除数不能为 0')finally:    print('收尾完成')

输出:

开始计算5.0收尾完成

再看另一个例子:

try:    print('开始计算')    result = 10 / 0    print(result)except ZeroDivisionError:    print('除数不能为 0')finally:    print('收尾完成')

输出:

开始计算除数不能为 0收尾完成

你会发现,finally 两次都执行了。

所以你一定别把它和 except 混在一起。

十、什么时候只写 try except,什么时候再加 else

这个问题非常实用。

如果你的逻辑很简单,比如只想出错时给一句提示,那 try...except 就够了。

例如:

try:    num = int(input('请输入数字:'))except ValueError:    print('输入错误')

但如果你想把“成功后的处理逻辑”和“可能出错的动作”区分得更清楚,那就值得加上 else

例如:

try:    num = int(input('请输入数字:'))except ValueError:    print('输入错误')else:    print('输入成功:', num)

所以不是说一定要写 else,而是当它能让结构更清晰时,就很值得用。

十一、什么时候适合加 finally

当你有“最后必须执行”的动作时,就很适合加 finally

例如:

打印结束提示 释放资源 关闭连接 恢复状态 做最后的记录

看一个很简单但很常见的例子:

try:    f = open('data.txt''r', encoding='utf-8')    content = f.read()    print(content)except FileNotFoundError:    print('文件不存在')finally:    print('文件处理流程结束')

这里不管文件找不找得到,最后都会告诉你流程结束了。

当然,这里如果是正式文件处理,很多时候更推荐直接用 with。 但用这个例子,是为了让你体会 finally 的用法。

十二、else 和 finally 能一起用,也能分开用

这一点你要知道。

不是说只要有 else 就必须有 finally。 也不是说有 finally 就必须带 else

它们可以自由组合,按需要使用。

比如只想处理成功逻辑:

try:    num = int(input('请输入数字:'))except ValueError:    print('输入错误')else:    print('输入成功')

只想处理最后收尾:

try:    num = int(input('请输入数字:'))except ValueError:    print('输入错误')finally:    print('流程结束')

想写完整结构,也完全可以:

try:    num = int(input('请输入数字:'))except ValueError:    print('输入错误')else:    print('输入成功')finally:    print('流程结束')

所以你要把它们看成两个可选增强件。

else 用来放成功逻辑。finally 用来放收尾逻辑。

十三、一个特别典型的文件场景

下面我们用一个更贴近实际的例子,把四部分串起来。

filename = input('请输入文件名:')try:with open(filename, 'r', encoding='utf-8'as f:        content = f.read()except FileNotFoundError:    print('没有找到这个文件')else:    print('文件读取成功,内容如下:')    print(content)finally:    print('本次文件读取操作结束')

这里非常清楚:

try 负责尝试打开并读取文件except 负责处理文件不存在的情况else 负责读取成功后的展示finally 负责统一收尾提示

这就是异常处理结构最理想的样子之一。

十四、为什么说这样写比全塞进 try 更专业

很多初学者喜欢这样写:

try:    filename = input('请输入文件名:')with open(filename, 'r', encoding='utf-8'as f:        content = f.read()    print('文件读取成功')    print(content)except FileNotFoundError:    print('没有找到文件')

不是不能跑。 但问题在于,“读取文件”和“读取成功后的展示”被混在同一个 try 里了。

更清晰的写法,是这样:

filename = input('请输入文件名:')try:with open(filename, 'r', encoding='utf-8'as f:        content = f.read()except FileNotFoundError:    print('没有找到文件')else:    print('文件读取成功')    print(content)

这样别人一眼就能看出来:

有风险的是读取文件这一步 成功后才执行的是后面的输出逻辑

代码的可读性会明显更好。

十五、一个常见误区:finally 里写返回值或关键逻辑要小心

这一章先不讲太深,但可以提前给你一个提醒。

finally 虽然很强,但它更适合做收尾工作,不适合塞太多核心业务逻辑。 因为它的语义本来就不是“主要处理逻辑区”,而是“最后整理区”。

你可以把它理解成:

会议结束时关灯关门 而不是在关门那一刻才讨论整个会议的重点内容

所以初学阶段,你可以先把 finally 的使用范围控制在:

打印结束信息 关闭资源 清理状态 做简单记录

这样最稳。

十六、再做一个输入场景练习

下面这个小例子也很值得你自己运行:

try:    text = input('请输入两个数字相除的除数:')    num = int(text)    result = 100 / numexcept ValueError:    print('请输入有效整数')except ZeroDivisionError:    print('除数不能为 0')else:    print('计算成功,结果是:', result)finally:    print('本次计算结束')

这个例子很好,因为它同时出现了两类异常:

输入的不是整数 输入的是 0

如果都没问题,就进入 else。 最后,无论怎样都进入 finally

你把这个例子跑通,else 和 finally 的感觉就会非常直观。

十七、你现在应该形成的结构感

到这里,你脑子里最好能建立这样一张图:

try尝试执行可能出错的代码

except异常发生时,按类型处理问题

else没有异常时,执行正常成功后的逻辑

finally不管成功还是失败,最后都执行的收尾逻辑

这张图一旦在脑子里稳定下来,你后面再看别人的异常处理代码,就不会觉得乱。

十八、本章小练习

你可以做两个很典型的练习。

第一个练习,处理数字输入。

让用户输入一个整数。 如果输入错误,提示格式不对。 如果输入正确,输出这个数乘以 2 的结果。 最后无论如何,都打印一句:输入处理结束。

参考代码:

try:    num = int(input('请输入一个整数:'))except ValueError:    print('输入格式不正确')else:    print('结果是:', num * 2)finally:    print('输入处理结束')

第二个练习,处理文件读取。

让用户输入文件名。 如果文件不存在,提示找不到文件。 如果文件存在,打印文件内容。 最后统一输出一句:文件操作结束。

参考代码:

filename = input('请输入文件名:')try:with open(filename, 'r', encoding='utf-8'as f:        content = f.read()except FileNotFoundError:    print('找不到这个文件')else:    print(content)finally:    print('文件操作结束')

这两个练习非常有代表性。 一个偏输入处理,一个偏文件处理。 你把它们跑通,这一章基本就吃透了。

十九、本章总结

这一章,我们把异常处理结构补完整了。

else 的作用是放“没有发生异常时才执行”的逻辑。 它能让成功逻辑和风险代码分得更清楚。finally 的作用是放“无论是否发生异常都要执行”的收尾逻辑。 它特别适合用来做结束提示、状态清理和资源收尾。 完整执行顺序要记住: 成功时,通常是 try → else → finally出错时,通常是 try → except → finally

学到这里,你对异常处理已经不只是会“接住报错”,而是开始真正理解它的结构了。 下一章我们继续往前走,进入一个非常重要但经常被忽视的能力:如何阅读报错信息:调试能力比背语法更重要

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:30:28 HTTP/2.0 GET : https://f.mffb.com.cn/a/496317.html
  2. 运行时间 : 0.354708s [ 吞吐率:2.82req/s ] 内存消耗:4,988.00kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=9844ed652986089b450737a60f4b59e2
  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.001268s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000873s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000539s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.010043s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000917s ]
  6. SELECT * FROM `set` [ RunTime:0.005331s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000784s ]
  8. SELECT * FROM `article` WHERE `id` = 496317 LIMIT 1 [ RunTime:0.046323s ]
  9. UPDATE `article` SET `lasttime` = 1783006228 WHERE `id` = 496317 [ RunTime:0.022385s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.003013s ]
  11. SELECT * FROM `article` WHERE `id` < 496317 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.011928s ]
  12. SELECT * FROM `article` WHERE `id` > 496317 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.009536s ]
  13. SELECT * FROM `article` WHERE `id` < 496317 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.023343s ]
  14. SELECT * FROM `article` WHERE `id` < 496317 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.043703s ]
  15. SELECT * FROM `article` WHERE `id` < 496317 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.040132s ]
0.356285s