Well, I just did a little test. I set a breakpoint on one of my custom timer jobs and waited for it to run. Once the breakpoint was hit, I restarted the sptimerv3 service. Well, after a few seconds the debugging mode ended. I didn't get an exception or anything really.
I don't know how the OOTB timer jobs handle that but I do know is when I developing my custom timer job, each time I needed to test my code, I had to restart the service. Well, even though I had my timer job set to run every minute, sometimes I would take up to an hour for it to run my timer job. I think this is because when the service restarts, it has to do some cleanup or catchup from it's previous state, which is why it took so long for it to get to my timer job.