If you really have very many catch
clauses, that is a fault you should fix first. Catching an exception should be uncommon, except to do exception translation at the boundary of a subsystem, and at high or medium levels of the program to log useful messages for the system operators. Perhaps you think, or have been told, you must log every exception? That is wrong.
Note that code that does exception translation is easy to change using an IDE, because you can use its refactoring features to quickly change the class name or to add or remove constructor arguments.
If you still have many catch clauses that have the same code (other than simple exception translation), that duplication is the next problem to solve. Extract duplicate code into a shared utility method (or methods). So you can share those methods between classes, they should be static
.