Ruby 提供了一种 begin resuce 的简便写法:
def method1
begin
do_something
rescue => e
#catch exception
end
end
可以简写为:
def method1
do_something
rescue => e
#catch exception
end
于是我在团队项目的代码中经常看到这么一种风格:
def method1
do_something
do_another_thing
# 20+ lines of code
rescue => e
#catch exception
end
但我觉得这是一种不好的实践,可能会隐藏掉很多 bug,举个例子:
def index
@book = Book.where(id: -111).first
@book_name = @book.name
rescue => e
logger.info "#{e}" # undefined method `name' for nil:NilClass
end
虽然这里把这个no method error
捕获住了,页面可能并不会挂掉,其实数据是有问题的。但如果不仔细看 log,可能就忽视了这行错误的代码。
想问问大家对于这种代码风格有什么看法。