12 EYLÃœL 2010, Pazar
Raylar denetleyicisi tüm özel durumları yakalamak
Orada bir şekilde bu gibi raylar denetleyicisi tüm uncatched istisnaları yakalamak için
def delete
schedule_id = params[:scheduleId]
begin
Schedules.delete(schedule_id)
rescue ActiveRecord::RecordNotFound
render :json => "record not found"
rescue ActiveRecord::CatchAll
#Only comes in here if nothing else catches the error
end
render :json => "ok"
end
Teşekkür ederim
CEVAP
21 Temmuz 2011, PERÅžEMBE
Ayrıca rescue_from yöntemi tanımlayabilirsiniz.
class ApplicationController < ActionController::Base
rescue_from ActionController::RoutingError, :with => :error_render_method
def error_render_method
respond_to do |type|
type.xml { render :template => "errors/error_404", :status => 404 }
type.all { render :nothing => true, :status => 404 }
end
true
end
end
Amacınız ne bağlı olarak, her kumanda için ayrı ayrı DEĞİL, özel durumları göz önünde bulundurmak isteyebilirsiniz. Bunun yerine, özel durumlar için yanıtları tutarlı bir şekilde yönetmek için exception_handler mücevher gibi bir şey kullanın. Bir bonus olarak, bu yaklaşım aynı zamanda katman katman oluşan özel durumlar, uygulama görmüyor isteği ayrıştırma veya veritabanı bağlantı hataları gibi işleyecektir. exception_notifier gem de ilginizi çekecektir.
Bunu PaylaÅŸ:
Genel olarak bir WPF uygulama özel dur...
C tüm özel durumları yakalamak...
Nasıl SQL Server zaman aşımı özel duru...
.NET - ' " uygulamak için en ...
Nasıl Flex tüm özel durumları yakalama...