Question of Exceptions handling

Dear All:
After read the book : In side window 2000 ,I learn the window handle
exception handler is like the way it handle the interrupt. and I also learn
form some
other article that driver can use __try __catch to catch some exception.
However , it will only catch some exception . It will not catch any
exception that IRQL above DPC level. I have 2 questions as following:

  1. Is there a general rule that let us know what kind of exception can
    be catch and what can not.
  2. I am on purpose the make the divide by zero in my __try block , and the
    program do unwind to my __catch block , however the driver become unstable.
    it will not crash immediately , but crash sometime after. If I do not use
    __try to protect the code which make the divide by zero , then the driver
    will crash right away, Does that mean this exception handler only working
    partially?

Can anyone give a hint

Thanks
Michael Cheng