草庐IT

try-catch-else

全部标签

带有 try 的 Ruby 字符串日期 to_date 产生无效日期

我想尝试将参数中的日期转换为日期格式,如果不能,那么我想将其分配给今天一年中的日期。这是我试过的。valid_until=params[:valid_until].try(:to_date)||Date.today.next_yeartry方法很酷,因为如果:valid_until日期为nil,它只会返回nil。不过我发现,如果某人有一个无效日期,如“4790224374”,那么它将返回一个ArgumentError作为无效日期。:valid_until日期仍将针对to_date运行。我想通过救援解决这个问题似乎是唯一的答案,只是想知道在明年将其设置为默认值之前是否有更聪明的方法来尝试

ruby - try_convert ruby​​ 方法的用途是什么?

我理解try_convert将尝试对对象使用隐式转换并返回nil如果隐式转换结果为nil,如果对象为nil或者如果不存在隐式转换方法。try_convert的用例是什么?它是否意味着测试输入并在它是预期类型时返回它,否则返回nil,同时避免出现TypeError?为什么不在这种情况下使用is_a? 最佳答案 try_convert根据我的经验,很少使用。但用例是严格转换对象,而不是更宽松地使用它们的表示。例如,考虑:/foo/.to_s#=>"(?-mix:foo)"/foo/.to_str#=>NoMethodError:unde

ruby-on-rails - Rails 3 - NilClass :Class when i try to render `model_name' method 的未定义方法 'new'

我想在用户创建订单时将值保留在表单中(因此,如果用户在字段中有错误,那么用户将获得包含他/她已经打印的参数的页面)。所以我接下来做ControllerclassOrdersController",",:two_words_connector=>","endendend查看新订单:Order'screating{:class=>"form-horizontal"}do|f|%>"control-label"%>"span2",:placeholder=>@everpresent_field_placeholder%>"btnbtn-largebtn-success"%>但是当我输入错误的

.NET 相当于 Ruby 的 begin/rescue/else

Ruby有一个elseblock,可以进入begin/rescue(对于.NET用户来说是try/catch)begin#somecoderescue#ohnoes!Catcheserrorslikecatchblocksin.NETelse#onlyexecuteswhenNOerrorshaveoccuredensure#alwaysexecutes-justlikethefinallyin.NETendelseblock中的代码只有在没有出现错误时才会执行。.NET中是否有提供此功能的结构? 最佳答案 在.NET中,你可以在#

ruby-on-rails - Ruby:在 Hash 中使用 try 的两种方法

我想在Ruby中使用try提取一个值。我发现有两种方法可以做到这一点,并在irb中试用了它。>>hash={a:1,b:2}=>{:a=>1,:b=>2}>>hash.try(:a)=>nil>>hash.try(:[],:a)=>1我有两个问题,hash.try(:[],:a)和hash.try(:a)有什么区别?我四处搜索,发现人们同时使用这两种方式。我看到很多地方使用hash.try(:a)来检索值,但为什么我的试验返回nil? 最佳答案 hash.try(:[],:a)#1尝试在hash上调用公共(public)方法[]作为

ruby - Emacs ruby​​ 模式缩进自定义 case..when 和 if..else 的赋值?

在Emacs中,使用ruby​​-mode,我找不到阻止这种情况发生的方法:foo=ifsomething?42else7end当我们的内部惯例是:foo=ifsomething?42else7end(同样适用于begin..end和case..when)。此外,虽然这不太麻烦,但我们对case..when的约定是缩进每个when。casewhateverwhenfoo"a"whenbar"b"else"c"end我知道人们通常说您应该将when与case对齐,但这不是我们公司的惯例,所以有人知道如何自定义吗?我几乎找不到针对ruby​​模式的定制。我唯一真正能够自定义的是括号内的缩进

c++ - ANSI C 等效于 try/catch?

我正在使用一些C代码,并且在代码运行时发现了错误,但对如何进行正确的try/catch(如在C#或C++中)知之甚少。例如在C++中我会这样做:try{//somestuff}catch(...){//handleerror}但在ANSIC中我有点迷茫。我尝试了一些在线搜索,但我没有看到有关如何实现它的足够信息/我想我会在这里问,以防有人能指出我正确的方向。这是我正在使用的代码(相当简单的递归方法),并希望使用try/catch(或等效的错误处理结构)进行包装。但是我的主要问题只是如何在ANSIC中进行try/catch...实现/示例不必是递归的。voidgetInfo(intoff

c++ - ANSI C 等效于 try/catch?

我正在使用一些C代码,并且在代码运行时发现了错误,但对如何进行正确的try/catch(如在C#或C++中)知之甚少。例如在C++中我会这样做:try{//somestuff}catch(...){//handleerror}但在ANSIC中我有点迷茫。我尝试了一些在线搜索,但我没有看到有关如何实现它的足够信息/我想我会在这里问,以防有人能指出我正确的方向。这是我正在使用的代码(相当简单的递归方法),并希望使用try/catch(或等效的错误处理结构)进行包装。但是我的主要问题只是如何在ANSIC中进行try/catch...实现/示例不必是递归的。voidgetInfo(intoff

ruby-on-rails - Ruby on Rails 忽略 If Else 语句

我的RubyonRails3Controller有一个简单的IfElse语句似乎不起作用。我的陈述:defcreateif@trained=Certificate.where(user_id:params[:certificate][:user_id])@trained.first.update_attributes(attend:"Yes")else@trained=Certificate.new(params[:certificate])if@trained.save@trained.update_attributes(attend:"Yes")endendredirect_tog

ruby-on-rails - ruby If .. Else .. End/Increment : Syntax Error

这个问题在这里已经有了答案:Unexpectedkeyword_enderror,yetsyntaxseemsfine(2个答案)关闭8年前。我创建了一个类方法,它循环访问一个Order对象数组。我正在使用那里的数据来构建哈希。我在iterable中的一个ifblock是:if!(report_hash[user_id][reason])report_hash[user_id][reason]=1elsereport_hash[user_id][reason]++end当我运行这个方法时,我得到:.rb:66syntaxerror,unexpectedkeyword_end(Synta