У меня есть объект, который служит родительским объектом для нескольких других. Он имеет метод, аналогичный этому:Ruby - рефакторинг для обработки различных типов ошибок
class Parent
def commit
begin
...
rescue => e
...
end
end
end
class ChildA < Parent
end
class ChildB < Parent
end
Однако ChildA
должен вести себя уникальным образом, когда commit
бросает определенный тип ошибки, UniqueError
. Я мог бы перезаписать весь файл commit
для этой функции, но это неудобно. Это заставляет меня беспокоиться, если мне нужно изменить тело в разделе begin
, так как теперь мне нужно будет изменить его в двух местах.
Какой чистый способ реорганизовать это?
Что делать, если есть один известное исключение, что мне нужно, чтобы спасти от последовательного образа в класс родителя, например спасение от 'ActiveRecord :: ResourceNotFound'? У вас есть родитель, который спасает только одну ошибку и как-то просто расширяет его в классе Child? – Bryce