Подавить исключение в браузере - PullRequest
1 голос
/ 27 октября 2009

Я должен отладить некоторую ошибку, связанную с БД, и постоянно отслеживал журнал, когда есть ошибка, вызванная БД Так как ошибка уже зарегистрирована, я хочу иметь исключения как:

ActiveRecord :: StatementInvalid

, чтобы пользователь не видел страницу «что-то пошло не так». Ошибка ограничена небольшим разделом приложения, и мы хотим удалить это подавление после ее исправления.

Спасибо !!!

Ответы [ 3 ]

3 голосов
/ 27 октября 2009

Вы можете добавить строку rescue_from в свой ApplicationController, чтобы перехватить это конкретное исключение, если оно выброшено в любом контроллере. Затем вы должны решить, что должно произойти в этой ситуации (например, перенаправить на начальную страницу).

1 голос
/ 27 октября 2009

Предполагая, что у вас есть проблема в действии "создать" контроллера, вы можете сделать что-то вроде:

def create
  @record.create(params[:record])
rescue ActiveRecord::StatementInvalid
  flash[:notice] = "There was a problem, but we know about it."
  redirect_to root_path
end
0 голосов
/ 27 октября 2009

Вы можете обернуть код, который выдает ошибку, в конечный блок начала восстановления.

begin 
  # stuff that gets executed
  ...
  # DangerousStatement
  ...
  # stuff that doesn't get executed if dangerous statement raises an error
  ...
rescue
  # set variables that are needed by other code and would have been set if dangerous statement succeeded
  ...
end

Однако это действительно то, что вы должны отлаживать в режиме разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...