Pour plus de clarté, utilisez setDefaultUncaughtExceptionHandler pour les applications Java autonomes ou pour les cas où vous êtes sûr d'avoir un point d'entrée bien défini pour le Thread.
Dans les cas où vous ne disposez pas d'un point d'entrée bien défini pour le Thread, par exemple lorsque vous travaillez dans un contexte de serveur web ou de serveur d'application ou dans un autre cadre où l'installation et la désinstallation sont gérées en dehors de votre code, regardez comment ce cadre gère les exceptions globales. Généralement, ces frameworks disposent de leurs propres gestionnaires d'exceptions globales, auxquels vous participez plutôt que de les définir.
Pour une discussion plus approfondie, voir http://metatations.com/2011/11/20/global-exception-handling-in-java/