Versuch und Rettung dienen verschiedenen Zwecken. Der Zweck von try
ist es, Sie davor zu bewahren, Folgendes tun zu müssen:
if user && user.email
Oder jede Situation, in der das übergeordnete Objekt möglicherweise Null sein kann, was einen NoMethodError in NilClass verursachen würde. Der Zweck von rescue
besteht darin, Ausnahmen zu behandeln, die durch Ihren Methodenaufruf ausgelöst werden. Wenn Sie erwarten, dass eine Ausnahme aufgerufen wird user.email
, können Sie dies rescue nil
tun, um zu verhindern, dass die Ausnahme in die Luft sprudelt.
Im Allgemeinen würde ich sagen, vermeiden Sie die Verwendung, es rescue nil
sei denn, Sie wissen explizit, welche Ausnahmen Sie retten, weil Sie möglicherweise eine andere Ausnahme retten, und Sie würden es nie erfahren, weil Sie es nicht sehen könnten rescue nil
. Zumindest könnten Sie es vielleicht protokollieren:
begin
...some code...
rescue => ex
logger.error ex.message
end