【问题标题】:How to handle errors in update action (using Twitter gem)如何处理更新操作中的错误(使用 Twitter gem)
【发布时间】:2011-12-27 20:31:35
【问题描述】:

我正在使用 Twitter gem 制作一个简单的 Rails 应用程序。该应用程序会提示用户从表单选择中选择值,然后将这些值放入推文中。因为用户是从表单选择中选择值,并且因为有默认值,所以用户(不耐烦地点击“发布到推特”按钮)很有可能会尝试创建重复的推文,这是推特禁止的

Twitter::Error::Forbidden in SessionsController#update

状态是重复的。

因此,这个菜鸟正在尝试创建他的第一个错误处理程序

   def update
     @twit = "@TwitterUser  #{params[:wants]} to go to  #{params[:place]} "

     begin
       client.update(@twit)
       redirect_to show_path, :notice => "' ' + #{params[:wants] + ' ' + params[:place]    has been tweeted}"

     rescue Exception
       redirect_to show_path, :notice => "Hey Loser, Twitter says you cannot post same twice"
     end 
   end

问题,有时当我没有连续两次发布相同的消息时,它会显示错误消息。我想知道错误消息是否以某种方式存在,或者我是否以可能会这样做的方式编写了操作?

额外这是我第一次尝试包含错误消息,我不知道我这样做是对还是错,或者可以做得更好。如果您对此代码的去向有任何提示...非常感谢。例如,我有几个可能会引发相同错误的表单/操作,那么我可以使用 DRY 技术吗?

【问题讨论】:

    标签: ruby-on-rails error-handling twitter


    【解决方案1】:

    可能是抛出了其他类型的错误,而不是“卡住”。您需要跟踪您的错误日志(或使用调试器)以查看正在抛出(并获救)的异常。您还可以使用多个救援案例来测试各种异常,如下所示:

    begin
       client.update(@twit)
       redirect_to show_path, :notice => "' ' + #{params[:wants] + ' ' + params[:place]    has been tweeted}"
     rescue Twitter::Error
       redirect_to show_path, :notice => "Hey Loser, Twitter says you cannot post same twice"
     rescue Exception
       puts "some other error happened!"
     end 
    

    处理错误的另一种选择是进行赋值、评估和引发任何异常,如下所示:

    begin
       response = client.update(@twit)
       if !response
          raise "something went wrong!"
       else
           redirect_to show_path, :notice => "' ' + #{params[:wants] + ' ' + params[:place]    has been tweeted}"
       end
    
     rescue Exception
       redirect_to show_path, :notice => "Hey Loser, Twitter says you cannot post same twice"
     end 
    

    【讨论】:

    • 所以在第二个示例中,用户是否收到两条错误消息“出了点问题”,然后是进一步的解释“Hey Loser...”,或者它们是针对单独的错误?
    • 在第二个例子中你只会得到一个异常,如果 client.update(@twit) 会抛出一个 Twitter::Error 你将从开始块返回并放入救援块(因此从不执行 if/else)...
    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    相关资源
    最近更新 更多