Should you log exceptions when they're thrown or when they're caught? Should you avoid logging the same exception multiple times? (This assumes that you DontUseExceptionsForFlowControl, and the exception indicates that an error occurred.)
Depends on the exception. An exception such as UserUnpluggedTheNetwork? probably shouldn't be logged; this is to be expected in a normally running program--unless the user expects that it should be.
Some exceptions are for the user; some are for the developer.