Delayed_job: how to raise and log exceptions

I have this in a delayed job.

def perform
begin
validation_warnings =
Account.global_import_legacy_accounts(billing_run.legacy_master_iif_csv.path)
rescue Exception => e
BackgroundProcessStatus.update(:status => “Process failed. Error:
#{e}.”)
end
end

I am finding that if an exception ocurrs somewhere in the code which is
being called (i.e. somewhere in Account#global_import_legacy_accounts),
the
job just quits and does not go into my rescue clause. Am I confused that
if
I have something wrapped in an begin…rescue that any exception below it
should raise up to this clause, or am I just having flashbacks of how C#
handles it? Anyway, what I need is a strategy to send a message and do
something if anything goes wrong in my delayed_job.