Can following code be considered as a good practice? If not, why?
try
{
// code that can cause various exceptions.
It's completely OK. You don't have to catch each exception type separately. You can catch specific type of exception, if you want to handle it in specific way. If you want to handle all exceptions in same way - catch base Exception
and handle it as you do. Otherwise you will have duplicated code in each catch block.