Я бы сказал, что PrinterException лучше, потому что он определяет исключения, которые не обязательно связаны с актом печати, что возможно, если аргументы не верны, или он терпит неудачу из-за какой-то не связанной проблемы, такой как проблемы с записью в файл.
Хотя это субъективно, так что решать вам.
Редактировать:
Если у вас есть две операции, print и shutdown, то print должна выдать исключение PrintingException иshutdown должен выдавать исключение PrinterShutdownException, оба из которых будут производными от PrinterException.Это позволит вам отследить конкретные случаи или любые исключения, связанные с принтером.