my $a; eval { my $vk = mp3vk_api->new ( login => 'mail@mail.com', password => 'passwd', dir => 'Rhapsody', threads => '10', ); if (ref($vk) eq 'mp3vk_api') { my $out = $vk->search('Rhapsody'); if (ref $out) { my $a = $vk->vk_download($out); } else { # handle possible search failure # throw an exception } } else { # handle constructor failure # throw an exception } }; if ($@) { # catch all exceptions and handle those which haven't been handled already } else { # use $a normally }