【发布时间】:2010-12-03 20:25:01
【问题描述】:
如何将异常处理/错误处理与业务逻辑分开? 我正在用 Perl 编写代码,错误/异常处理和业务逻辑使得在审查时很难理解代码。
如何重构我的代码以使其更具可读性,同时具有错误处理功能。 另请注意,我不使用 try catch 或类似的东西。
我们的一位高级程序员建议我们重新打开操作系统标准错误并将所有内容写入那里,我们可以被调用者捕获。
编辑:这是我如何处理错误。我有很多 Perl 模块..
所以check2.pm
package check2;
sub printData {
print STDERR "Error Message from sub routine \n";
}
1;
我在我的 Perl 脚本中使用它,check.pl
在我的 Perl 脚本中
#!/usr/bin/perl
use LoadModules;
use strict;
use warnings;
load check2;
my $stderrholder;
local *SAVEERR;
# First, save existing STDERR
open SAVEERR, ">&STDERR" or print "not able to open";
close STDERR;
# Open the STDERR to a variable
open STDERR, ">", \$stderrholder or die "Failed to reopen STDERR $!\n";
#Start of processing
# Now print something to STDERR, redirected to $ stderrholder
print STDERR " Error Message from Main script \n";
check2::printData();
#End of processing
# Now close and restore STDERR to original condition.
close STDERR;
#open STDERR, ">&SAVEERR";
# Now check if there were any processing errors.
if(length($stderrholder)) {
print "\nProcessing errors\n" ;
if(length($stderrholder)) {
print "\nProcessing errors\n" ;
print $stderrholder;
} else {
print "\nNo Processing errors\n" ;
}
如果有人能帮我指出其中的错误,我将不胜感激。
【问题讨论】:
-
所以这和编程无关?伙计,所以一天比一天更糟..
-
投票可能更多地证明了问题的基调而不是其内容。
标签: perl error-handling