gpt4 book ai didi

perl - 为应用程序设计错误消息系统的最具可扩展性/可扩展性的方法是什么?我将使用 Perl。

转载 作者:行者123 更新时间:2023-12-03 07:43:21 26 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

6年前关闭。




Improve this question




我只需要这个设计的通用架构。目前我正在考虑创建一个包含所有错误消息哈希的脚本。错误消息本身也是包含状态代码和应用程​​序中的错误消息的哈希值。然后在应用程序代码中出现错误的地方,我只有 die 函数,它创建一个新错误并使用包含错误列表的脚本中的错误名称。我不知道这是否是设计这样一个系统的最佳或最有效的方法。我正在尝试以这样的方式设计它,以便如果必须添加更多错误。任何想法或指导将不胜感激。

最佳答案

当你说;

错误消息本身也是包含状态代码和应用程​​序中的错误消息的哈希值。然后在应用程序代码中出现错误的地方,我只有 die 函数,它创建一个新错误并使用包含错误列表的脚本中的错误名称。

...您或多或少是在描述异常对象。这个简单的异常类(taken from here)

package Exception;

sub new
{
my $class = shift;
bless { msg=>"@_" }, $class;
}

sub what
{
my ($self) = @_;
return sprintf "Exception: %s\n", $self->{msg};
}

它的大小完成了很多工作,并像这样使用;
sub try(&)   { eval {$_[0]->()}  }
sub throw($) { die $_[0] }
sub catch(&) { $_[0]->($@) if $@ }

# The main program
try {
throw Exception->new("A real exception");
};
catch {
print $@->what;
};

这个对象只有一个属性, 消息 (称为 ->what ),但您显然可以拥有错误代码、应用程序、应用程序阶段等的属性。请注意 &throw 周围的小包装模具 并且异常对象是在它需要的地方创建的——就像你的陈述“......在应用程序代码中发生错误的地方,我只有一个创建新错误的 die 函数......”

您的“带有所有错误消息哈希的脚本”然后成为您的应用程序的(子)模块,专用于异常对象,这些对象要么

1)预先创建它们并通过一些错误代码对它们进行索引;或者

2)(更好)创建一个小的通用层次结构
越来越具体的异常类,当检测到错误时,您也可以从中创建动态异常对象(很像上面的)

最后,根据您的具体情况,您可能需要使用 cpan 提供的预制、完整的花里胡哨的解决方案。我自己没用过 Exception::System看起来不错。

关于perl - 为应用程序设计错误消息系统的最具可扩展性/可扩展性的方法是什么?我将使用 Perl。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com