How to catch all exceptions in ruby?
我们如何捕获或/和处理ruby中所有未处理的异常?
例如,这样做的动机可能是将不同的文件记录到不同的文件或发送和发送电子邮件到系统管理。
在Java中我们会这样做
1 | Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler ex); |
在NodeJS中
1 2 3 | process.on('uncaughtException', function(error) { /*code*/ }); |
在PHP中
1 2 3 4 5 6 | register_shutdown_function('errorHandler'); function errorHandler() { $error = error_get_last(); /*code*/ } |
我们怎么能用红宝石做到这一点?
高级解决方案使用exception_handler gem
如果您只想捕获所有异常并将其放在日志中,可以将以下代码添加到
1 2 3 4 5 6 7 8 9 10 11 | begin # do something dodgy rescue ActiveRecord::RecordNotFound # handle not found error rescue ActiveRecord::ActiveRecordError # handle other ActiveRecord errors rescue # StandardError # handle most other errors rescue Exception # handle everything else end |
您可以在此主题中找到更多详细信息。
在Ruby中,您只需将程序包装在