Hello, and good question!
Note catching exceptions isn't the same as your program crashing; not catching an error is actually one way a program can crash, and it's to be avoided by using exceptions properly.
Not specifying exceptions, or not naming an exception, is on its own usually (or maybe always) not a good practice, as you'll catch all exceptions that occur in that try block, and will be forced to handle them the same way with the same code in the except block.
It's better to tailor your error handling to specific exception types using named exceptions; if an error occurs during execution, you want to identify it as specifically as possible and handle it accordingly by resuming execution if possible and if needed providing a good error message so any user will know what happened.
There are times when you can't predict all types of exceptions, or want a catch-all for a group of exceptions and want to handle them all the same. In this case, having a series of named exception blocks, ending with an unnamed one is the way to handle this.
for more details!