Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 捕获所有异常而不开始救援_Ruby_Backtrace - Fatal编程技术网

Ruby 捕获所有异常而不开始救援

Ruby 捕获所有异常而不开始救援,ruby,backtrace,Ruby,Backtrace,为了格式化回溯输出,我试图找到捕获所有异常的理想方法 我应该提到的是,其目的是提供一个简单的gem,它可以是所需的,并提供更易于阅读的回溯。因此,begin…rescue不是一个选项 到目前为止,我找到了两种方法,每种方法都有自己的问题: 使用,就像我一样 使用,就像我一样 TracePoint方法给了我比需要的灵活性更小的灵活性,而使用at_exit方法,我觉得我滥用了这个方法,特别是因为我还必须使用exit以防止打印原始回溯 因此,我的问题是: 有没有比上述两种方法更好的方法 使用退出时的-

为了格式化回溯输出,我试图找到捕获所有异常的理想方法

我应该提到的是,其目的是提供一个简单的gem,它可以是
所需的
,并提供更易于阅读的回溯。因此,
begin
rescue
不是一个选项

到目前为止,我找到了两种方法,每种方法都有自己的问题:

  • 使用,就像我一样

  • 使用,就像我一样

  • TracePoint
    方法给了我比需要的灵活性更小的灵活性,而使用
    at_exit
    方法,我觉得我滥用了这个方法,特别是因为我还必须使用
    exit以防止打印原始回溯

    因此,我的问题是:

  • 有没有比上述两种方法更好的方法
  • 使用退出时的
    -除了使用退出之外,是否有其他方法防止任何回溯显示
  • 参考代码:

    at_exit do
      if $! and $!.class != SystemExit
        show_errors $!
        exit! 1
      end
    end
    
  • 也许吧。看看我是怎么做到的
  • 对。正如我在上面的链接中所做的那样,请执行以下操作:

    $stderr.reopen(IO::NULL)
    $stdout.reopen(IO::NULL)
    

  • 有趣。
    重新打开的功能是什么?我知道它是为了防止原来的错误出现,但我不知道为什么它会产生这个结果。(我会试试你的宝石)。