异常处理、重试机制与熔断机制的深度解析
1. 异常处理的简单实现与性能考量
在处理授权检查时,可以采用简单的方式。例如使用 Authorizer.check 方法,代码如下:
Authorizer.check(current_user, :manage_users)
show_manage_users_page
同时,在应用的某个位置,使用如下代码捕获 Authorizer::InvalidAuthorization 异常并显示相应页面:
begin
handle_request
rescue Authorizer::InvalidAuthorization
show_invalid_access_page
end
在性能方面,使用返回值处理错误通常比使用异常性能更好。对于简单方法,异常处理在性能上远不如返回值处理。不过,对于有一定处理逻辑的方法,如单个 String#gsub 调用,方法执行时间可能会大于异常处理和返回值处理的性能差异。但追求极致性能时,仍应选择返回值处理。
使用异常时,其性能会随调用栈的大小而下降。正常抛出异常时,Ruby 需要构建异常的回溯信息,这涉及读取整个调用栈并转换为 Thread::Backtrace::Location 对象数组,调用栈越大,构建数组的时间越长。
为了加速异常生成过程,可以在 <
超级会员免费看
订阅专栏 解锁全文
51

被折叠的 条评论
为什么被折叠?



