大佬教程收集整理的这篇文章主要介绍了perl6 – 在Perl 6中捕获shell命令的异常,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
$cat prog.sh echo "error" >&2 exit 1@H_675_5@以下是我从Perl 6中调用它的方法:
put "start"; try { sHell "./prog.sh"; } put "end";@H_675_5@输出显示程序在运行sHell命令后退出.
start error The spawned command './prog.sh' exited unsuccessfully (exit code: 1) in block <unit> at b.P6 line 2@H_675_5@如果我添加一个CATCH块
put "start"; try { sHell "./prog.sh"; CATCH { default {} } } put "end";@H_675_5@一切都很好,程序工作到最后一行:
start error end@H_675_5@所以我的问题是:为什么有必要添加CATCH块,而尝试单独无法解决错误?
sink
之前不会抛出异常.
@H_675_5@只有sHell的try块完全执行而没有抛出异常,返回块中的最后一个值,然后在try的上下文之外沉没,然后抛出异常.
@H_675_5@你可以看到这个:
put "start"; try { sHell "./prog.sh"; 'something'; } put "end";@H_675_5@现在sHell陷入了try,它被try的隐式CATCH捕获. try块返回块中的最后一个值’something’,然后安全地在try之外沉没. @H_675_5@您还可以强制接收器在try中发生:
put "start"; try { sink sHell "./prog.sh" } put "end";@H_675_5@您添加的CATCH块只是阻止try块从sHell返回返回值. @H_675_5@你可以重新安排它们,看看它仍然会爆炸:
put "start"; try { CATCH { default {} } sHell "./prog.sh"; } put "end";@H_675_5@处理这个恕我直言的最好,最清晰的方法是自己检查sHell的返回,而不是让它下沉并抛出异常:
put "start"; if sHell "./prog.sh" { say 'ok' } else { say 'failed' } put "end";
以上是大佬教程为你收集整理的perl6 – 在Perl 6中捕获shell命令的异常全部内容,希望文章能够帮你解决perl6 – 在Perl 6中捕获shell命令的异常所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。