使用$ @在模块中传递错误消息

疯子

我一直在研究CPAN模块的一个分支,该分支现在不再维护(据我所知)。在此模块中,它们用于$@将错误消息向上传递到堆栈。换句话说,他们$@在调用子例程时设置是否出错,然后在调用之后检查是否已设置。我以前从未见过此变量,但我认为它很有用,因此我开始在代码中以相同的方式使用它。现在,我最近阅读了更多有关它的内容,发现它的用途要比此狭窄。阅读perlvar(以及有关此问题的其他SO问题)并不能完全为我解答,但是,使用$@这种方式可以吗?我知道某些“标点符号”变量绝对应该以这种通用方式使用(有些甚至local),这是其中一种情况,还是可以继续这种做法?

莱昂德

$@是Perl中相对“非特殊”的特殊变量。Perl中的任何内容都不会从中读取$@,并且只能eval {}在末尾由一个写入这样可以相对安全地用于自己的错误通知目的。

特别是,IO::Socket模块的核心树使用它来指示构造函数的失败:

use IO::Socket::IP;
my $sock = IO::Socket::IP->new(...) or die "Cannot connect - $@";

比较传统的$!方法在这里不合适,因为它$!具有包装libc级errno结构的魔力表示errno即使将其读取为数字或字符串,也只能将其设置为整数值。因为有时会发生与errno不直接相关的IO::Socket故障(例如,很多解析器故障),因此有时$!是不合适的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

yii使用模块中的消息

来自分类Dev

使用ActiveMQ在应用程序中的模块之间进行消息传递

来自分类Dev

如何使用Web API中的过滤器通过错误消息传递状态

来自分类Dev

使用Python的Ubuntu“无法导入站点模块”错误消息

来自分类Dev

从控制器传递错误消息以使用Backbone查看

来自分类Dev

使用数据注释传递错误消息的字符串

来自分类Dev

使用Spring REST的URL中的错误消息

来自分类Dev

内核模块中已定义变量但未使用的消息

来自分类Dev

在发布/订阅和消息传递队列中为多个使用者提供消息传递保证

来自分类Dev

如何使用Langohr在RabbitMQ中重新传递排队的消息?

来自分类Dev

使用模板在C ++中实现通用消息传递

来自分类Dev

R中的Message()-使用输出作为消息输入传递

来自分类Dev

如何使用websocket检查消息是否真的在Netty中传递?

来自分类Dev

如何使用Langohr在RabbitMQ中重新传递排队的消息?

来自分类Dev

使用jQuery验证在错误消息中显示输入值

来自分类Dev

如何使用Bottle HTTPError在JSON中返回错误消息?

来自分类Dev

DataAnnotations在错误消息中未使用DisplayName属性

来自分类Dev

尝试与`with`一起使用时,NetLogo中的错误消息

来自分类Dev

使用Powershell显示日志文件中的整个错误消息

来自分类Dev

使用tryCatch的函数中的自定义错误消息

来自分类Dev

使用javascript处理Azure函数中的服务总线错误消息

来自分类Dev

使用SQL查询时Crystal报表中的错误消息

来自分类Dev

在 javascript/html 中不使用警报显示错误消息

来自分类Dev

如何使用存储在单独模块中的错误代码

来自分类Dev

使用导入模块中的变量时,SASS'无效的CSS错误'

来自分类Dev

使用matplotlib在Python中创建图:错误模块6

来自分类Dev

模块彼此循环使用。Perl中的编译错误

来自分类Dev

Xilinx 中的 Verilog 模块“信号从未使用”错误

来自分类Dev

使用模块 os 和 sys 在 python 中索引错误

Related 相关文章

  1. 1

    yii使用模块中的消息

  2. 2

    使用ActiveMQ在应用程序中的模块之间进行消息传递

  3. 3

    如何使用Web API中的过滤器通过错误消息传递状态

  4. 4

    使用Python的Ubuntu“无法导入站点模块”错误消息

  5. 5

    从控制器传递错误消息以使用Backbone查看

  6. 6

    使用数据注释传递错误消息的字符串

  7. 7

    使用Spring REST的URL中的错误消息

  8. 8

    内核模块中已定义变量但未使用的消息

  9. 9

    在发布/订阅和消息传递队列中为多个使用者提供消息传递保证

  10. 10

    如何使用Langohr在RabbitMQ中重新传递排队的消息?

  11. 11

    使用模板在C ++中实现通用消息传递

  12. 12

    R中的Message()-使用输出作为消息输入传递

  13. 13

    如何使用websocket检查消息是否真的在Netty中传递?

  14. 14

    如何使用Langohr在RabbitMQ中重新传递排队的消息?

  15. 15

    使用jQuery验证在错误消息中显示输入值

  16. 16

    如何使用Bottle HTTPError在JSON中返回错误消息?

  17. 17

    DataAnnotations在错误消息中未使用DisplayName属性

  18. 18

    尝试与`with`一起使用时,NetLogo中的错误消息

  19. 19

    使用Powershell显示日志文件中的整个错误消息

  20. 20

    使用tryCatch的函数中的自定义错误消息

  21. 21

    使用javascript处理Azure函数中的服务总线错误消息

  22. 22

    使用SQL查询时Crystal报表中的错误消息

  23. 23

    在 javascript/html 中不使用警报显示错误消息

  24. 24

    如何使用存储在单独模块中的错误代码

  25. 25

    使用导入模块中的变量时,SASS'无效的CSS错误'

  26. 26

    使用matplotlib在Python中创建图:错误模块6

  27. 27

    模块彼此循环使用。Perl中的编译错误

  28. 28

    Xilinx 中的 Verilog 模块“信号从未使用”错误

  29. 29

    使用模块 os 和 sys 在 python 中索引错误

热门标签

归档