Github user bbende commented on the issue:
https://github.com/apache/nifi/pull/3040
I agree with the points made by @joewitt , although this PR did make me
compare what we are doing for processors vs. controller services...
I noticed that for processors the try/catch wraps the Class.forName AND the
newInstance() call, and then creates a ghost component an exception is thrown,
where as controller services only catch exceptions from Class.forName and
anything outside of that would not create a ghost component.
Technically exceptions from Class.forName would be the ones that indicate
the class for the component is not present, and exceptions from newInstance()
would indicate an exception thrown from the constructor.
So I'm not sure which is more correct, or if anything should be changed,
but I did notice the difference in behavior, and some of the changes in this PR
seem to be for making the controller service behavior more similar to
processors.
---