LGTM.
Why do you need a special Exception for factory instantiation? Why is the standard SawmillException not enough? Since it has not additional fields, the only difference is the class name.
It is not a major issue, I am just wondering what is the advantage of a new exception class in this case?
I need that, because SawmillException is ignored/logged on the top of the stack.
I need that, because
SawmillException
is ignored/logged on the top of the stack.