我使用以下行来进行简单的系统调用:
system ("mkdir -p Purged") or die "Failed to mkdir." ;
Run Code Online (Sandbox Code Playgroud)
执行脚本确实使系统调用,我可以找到一个名为Purged的目录,但仍然会打印错误消息并且脚本将死亡.我的语法有什么问题?
我希望我的脚本perl在生成警告时死亡,包括由使用过的包生成的警告.
例如,这应该死:
use strict;
use warnings;
use Statistics::Descriptive;
my @data = ( 8, 9, 10, "bbb" );
my $stat = Statistics::Descriptive::Full->new();
$stat->add_data(@data);
Run Code Online (Sandbox Code Playgroud)
use warnings FATAL => 'all';不会有帮助,因为它是词法范围的.测试:: NoWarnings也不起作用,因为它不会杀死脚本.
所以我的问题有两个限制:
所以我的问题是我在点击事件发生后尝试取消绑定,然后在点击事件代码完成后重新绑定它.我这样做是为了防止代码当前正在进行中的重复点击(我有fadeIn/Out动画,可以快速点击按钮两次或三次,从而执行我的代码2或3次,这是不需要的) .我正在使用的代码如下:
$item.live("click", handleClick);
Run Code Online (Sandbox Code Playgroud)
和
function handleClick(ev) {
$(this).die("click");
// perform code here, including things with 'ev'
$(this).live("click", handleClick);
}
Run Code Online (Sandbox Code Playgroud)
我疯了,还是应该没有问题?现在,我可以点击一次,但之后不会再次点击.很明显die()正在工作,但它并没有因为某种原因而被重新绑定到该函数.我已经验证它确实到达handleClick()中的代码以重新绑定实时点击.
有任何想法吗?任何帮助将不胜感激.谢谢.
默认情况下,Raku 的 "die" 报告 "die" 所在的行号,如果你想要调用上下文的行号,ala "carp" with perl 5 怎么办?
我还在学习PHP学习.终止脚本时,exit()/ die();和return;?之间有什么区别:
如何检查导致脚本或eval块终止的异常类型?我需要知道错误的类型以及异常发生的位置.
我正在玩错误处理并遇到一些问题.我使用DBI模块连接数据库.
我通过使用我调用错误的子例程来执行自己的错误处理.
我可以捕获我自己的死并处理它们就好了但是当我的数据库连接失败时,DBI模块显然打印出它自己的死:
DBI connect(...)失败:ORA-12154:TNS:无法解析指定的连接标识符(DBD ERROR:OCIServerAttach)...
我怎么去抓这个?
我试过这样使用$SIG{__DIE__}:
local $SIG{__DIE__} = sub {
my $e = shift;
print "Error: " .$e;
};
Run Code Online (Sandbox Code Playgroud)
这是在我的主文件的底部,在这个文件中我也调用了我自己的模块中可用的connect子例程.我也尝试将这段代码放在我的模块的底部,但它仍然打印出没有的错误
错误:
在它面前.
我似乎无法在任何地方找到一个好的答案.如果我正在运行输出缓冲,并且a die()被触发,那么它ob_end_flush()也会启动吗?
可以在Perl 5中system()拨打电话die吗?
(换句话说,为了100%防止system()打电话的程序,它是否需要被包装成一个eval块,还是完全没必要?)
我没有找到这种可能性perldoc system,但没有找到准确的"这个呼叫永远不会死".
注意:问题是关于这里的基本CORE Perl,没有autodie或任何其他具有类似效果的自定义模块.此外,假设没有ALRM设置信号,或任何其他自定义信号处理程序.
我假设Perl 5.*的所有版本都表现相同,但如果没有,则可以理解与5.8相关的答案.
在对项目中一个非常模糊的错误进行了一些认真的调试之后,我能够得到这个简短的代码。一个没有死亡的死亡呼叫。
该问题仅在调用script.pl. 如果Class_A直接调用,则die调用会成功。
我们需要三个文件:
文件 1:script.pl
use strict;
use warnings;
use lib '.';
use Class_A;
# This should not execute. Class_A should die at loading time
print "We shouldn't get here. Class_A shoud not load and die.\n";
Run Code Online (Sandbox Code Playgroud)
文件 2:Class_A.pm
package Class_A;
use strict;
use warnings;
use Class_B;
# This code SHOULD die:
my $p = Class_B->new;
$p->do_something->die_now;
1;
Run Code Online (Sandbox Code Playgroud)
文件 3:Class_B.pm
package Class_B;
use strict;
use warnings;
sub new {
my $class = shift;
bless …Run Code Online (Sandbox Code Playgroud)