type-safe transmisson of arbitrary data from throw-point to handler
no extra code/space/time penalty if not used
every exceptionis cought by the appropriate handler
groupping of exceptions
ok in multithreaded environment
cooperation with other languages (like C)
But the extra cost in code and runtime most cases unavoidable. Scott Meyers states that declaring exceptions, even if it never used costs extra 10% both in extra code and extra runtime.