【问题标题】:Getting exceptions from IO::File?从 IO::File 获取异常?
【发布时间】:2014-01-08 14:19:17
【问题描述】:

与直接使用 perl 的内置 IO 函数相比,IO::File、IO::Socket::INET 模块具有一些优势,例如具有显式语法来刷新句柄。

但是,它们似乎比内置的 IO 功能有一些缺点。例如,据我所知,它们不能与 autodie 模块结合使用以引发故障异常,因此我发现自己必须编写更多样板代码来处理故障,而不是使用内置函数。

有没有办法将两者结合起来,或者其他一些具有结合功能的模块?我注意到一些用途有限的 IO 模块,例如 File::Slurp,确实允许更灵活的错误处理。

我正在编写模块代码,理想情况下,该解决方案应该可以一直运行到 perl 5.10.0。

【问题讨论】:

  • 请注意,文件句柄是/包含 IO::File 对象(给定一个足够现代的 perl,也许还有一个 use IO::File 来加载方法)——所以你可以使用像 open 这样的内置函数而不放弃 OOP 功能。

标签: perl exception perl-io autodie


【解决方案1】:

你看过 Path::Tiny 吗?语法不同,但确实会引发异常。

例如

use Path::Tiny;
path('/non/existent/file')->openr;

会因为 Path::Tiny::Exception 对象而死(假设你没有这样的文件)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多