无法捕获哪些可抛出对象?

汤姆

我的Ruby on Rails应用程序中的以下代码:

def test
    begin
        puts 'a'
        authenticate_user!
        puts 'b'
    rescue Exception => e
        puts 'c'
    ensure
        puts 'd'
    end
    puts 'e'
end

哪里:

  • test 是Ruby on Rails中的控制器
  • authenticate_user! 是来自devise Ruby库的函数
  • 访问的结果是HTTP 401

印刷品:

a
d

对我来说,这表明authenticate_user!抛出了某种异常,但是我们无法捕获它。这怎么可能?

我还尝试了以下救援块:

rescue Object => e
    puts 'c'
rescue e
    puts 'c'
rescue 
    puts 'c'
尼尔·斯莱特

Ruby中有两种类型的错误处理流程。

最常用,最灵活的是 begin...rescue

还有throwand catch,它更加轻巧。一些机架库使用此机制。

最重要的是,有时是令人讨厌的,机制是分开的,并且如果库throw...catch用于程序流,则不能使用来拦截消息begin...rescue,因此rescue Exception将不会执行块。

通常,除非文档提示您可以,否则您不应尝试拦截第三方throw/ catch这是因为该库可能已修改env为设置错误消息/状态。而是寻找一种与Rack错误一起使用但返回truefalse正在检查的条件的等效方法例如,也许该方法user_signed_in?会更好。


catch如何在Ruby中工作的示例:

puts 'a'
x = catch(:mysymbol) do
    puts 'b'
    throw :mysymbol, 'world'
    puts 'c'
end
puts "hello #{x}"

版画

a
b
hello world

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从可抛出对象中捕获异常原因?

来自分类Dev

无法在多线程解决方案中捕获被抛出的对象

来自分类Dev

异常和可抛出未捕获

来自分类Dev

从 String className 获取可抛出的类对象

来自分类Dev

可捕获的致命错误:无法将类dayDaytimeFields的对象转换为字符串

来自分类Dev

可捕获的致命错误:“”行的“”中的类“”的对象无法转换为字符串

来自分类Dev

可捕获的致命错误:无法将对象转换为字符串

来自分类Dev

可捕获的致命错误:类的对象...无法转换为字符串

来自分类Dev

symfony2可捕获的致命错误:类的对象无法转换为字符串

来自分类Dev

可捕获的致命错误:无法将MongoCursor类的对象转换为字符串

来自分类Dev

Symfony 2可捕获的致命错误:无法将类UserCategory的对象转换为字符串

来自分类Dev

PHP,可捕获的致命错误:无法将mysqli类的对象转换为字符串

来自分类Dev

可捕获的致命错误:Instamojo类的对象无法转换为字符串

来自分类Dev

可捕获的致命错误:无法将PDO类的对象转换为

来自分类Dev

可捕获的致命错误:无法将 AppBundle\Entity\Location 类的对象转换为字符串

来自分类Dev

可抛出:无法创建SD卡

来自分类Dev

为什么CLS强制抛出/捕获Exception派生对象?

来自分类Dev

捕获对象在代码之前抛出的异常... c#

来自分类Dev

Haskell在Java编译时无法捕获哪些类型的错误?

来自分类Dev

Spring @Async方法无法捕获/抛出异常的问题

来自分类Dev

libtidy抛出的Python异常很有趣,无法捕获

来自分类Dev

无法使用promises'catch'捕获在promise中抛出的错误

来自分类Dev

javaFX Alert抛出无法捕获的非法状态异常?

来自分类Dev

可捕获的致命错误:无法将类__PHP_Incomplete_Class的对象转换为字符串

来自分类Dev

可捕获的致命错误:无法在行114中将类PDOStatement的对象转换为字符串

来自分类Dev

可捕获的致命错误:注册时无法将类mysqli_result的对象转换为字符串

来自分类Dev

可捕获的致命错误:无法在php中将类mysqli_result的对象转换为字符串

来自分类Dev

可捕获的致命错误:WP_User类的对象无法在第139行的/ directory /中转换为字符串

来自分类Dev

可捕获的致命错误:无法将类Proxies \ __ CG __ \ AppBundle \ Entity \ Ticket的对象转换为字符串

Related 相关文章

  1. 1

    如何从可抛出对象中捕获异常原因?

  2. 2

    无法在多线程解决方案中捕获被抛出的对象

  3. 3

    异常和可抛出未捕获

  4. 4

    从 String className 获取可抛出的类对象

  5. 5

    可捕获的致命错误:无法将类dayDaytimeFields的对象转换为字符串

  6. 6

    可捕获的致命错误:“”行的“”中的类“”的对象无法转换为字符串

  7. 7

    可捕获的致命错误:无法将对象转换为字符串

  8. 8

    可捕获的致命错误:类的对象...无法转换为字符串

  9. 9

    symfony2可捕获的致命错误:类的对象无法转换为字符串

  10. 10

    可捕获的致命错误:无法将MongoCursor类的对象转换为字符串

  11. 11

    Symfony 2可捕获的致命错误:无法将类UserCategory的对象转换为字符串

  12. 12

    PHP,可捕获的致命错误:无法将mysqli类的对象转换为字符串

  13. 13

    可捕获的致命错误:Instamojo类的对象无法转换为字符串

  14. 14

    可捕获的致命错误:无法将PDO类的对象转换为

  15. 15

    可捕获的致命错误:无法将 AppBundle\Entity\Location 类的对象转换为字符串

  16. 16

    可抛出:无法创建SD卡

  17. 17

    为什么CLS强制抛出/捕获Exception派生对象?

  18. 18

    捕获对象在代码之前抛出的异常... c#

  19. 19

    Haskell在Java编译时无法捕获哪些类型的错误?

  20. 20

    Spring @Async方法无法捕获/抛出异常的问题

  21. 21

    libtidy抛出的Python异常很有趣,无法捕获

  22. 22

    无法使用promises'catch'捕获在promise中抛出的错误

  23. 23

    javaFX Alert抛出无法捕获的非法状态异常?

  24. 24

    可捕获的致命错误:无法将类__PHP_Incomplete_Class的对象转换为字符串

  25. 25

    可捕获的致命错误:无法在行114中将类PDOStatement的对象转换为字符串

  26. 26

    可捕获的致命错误:注册时无法将类mysqli_result的对象转换为字符串

  27. 27

    可捕获的致命错误:无法在php中将类mysqli_result的对象转换为字符串

  28. 28

    可捕获的致命错误:WP_User类的对象无法在第139行的/ directory /中转换为字符串

  29. 29

    可捕获的致命错误:无法将类Proxies \ __ CG __ \ AppBundle \ Entity \ Ticket的对象转换为字符串

热门标签

归档