Netflix / governator

Governator is a library of extensions and utilities that enhance Google Guice to provide: classpath scanning and automatic binding, lifecycle management, configuration to field mapping, field validation and parallelized object warmup.
Apache License 2.0
825 stars 180 forks source link

RuntimeException turned into Error #371

Open arcuri82 opened 7 years ago

arcuri82 commented 7 years ago

Hi, I have a problem with Governator that is turning runtime exceptions (eg IAE/ISE due to misconfigurations in PostConstructs) into Errors (which usually should not be catch in a program). The issue seems lying in InternalLifecycleModule#onProvision, where there is:

 try {  ...
  } catch (ExecutionException e) {
         // caching problem
        throw new RuntimeException(e);
   } catch (Throwable e) {
        // unknown problem will abort injector start up
        throw new Error(e);
   }

is that really the expected behaviour you want? If there is a need to catch Throwable, what about adding before it something like the following?

catch(RuntimeException e){
     throw e;
}
arcuri82 commented 7 years ago

sorry, a clarification: the issue is with a thrown InvocationTargetException (ITE), which extends Exception (not RuntimeException). So, when I call LifecycleInjector#createInjector there is no checked exception, but then runtime exceptions that lead to ITEs are masked into Error, which my main catch at the root of my application does not catch