Exceptions follow a hierarchy just like every other object.
Of course you can declare that a method throws the abstract parent of your custom class. Why didn't you just write a
test case and compile it?
You can't declare that a method throws a checked exception and then have the method throw an exception that is the parent of what you declared. Try it and see.
Bill