Правильный способ сделать это - сначала проверить на ноль:
function ccdeleteuser($emailaddress)
{
$ConstantContact = new ConstantContact("basic", "apikey", "usr", "pwd");
$SearchContact = $ConstantContact->searchContactsByEmail($emailaddress);
// first makes sure that the 0 index of of SearchContact is accessible at all
// then it ensures that only something "truthy" will trigger delete -- this
// means that if $SearchContact[0] is null, the function won't try to delete
if( $SearchContact && isset( $SearchContact[0] ) && $SearchContact[0])
$DeleteContact = $ConstantContact->deleteContact($SearchContact[0]);
else
echo "Can't do nothin'"; // do something useful?
}
С помощью try ... catch вы можете сделать так, чтобы это выглядело так:
function ccdeleteuser($emailaddress)
{
$ConstantContact = new ConstantContact("basic", "apikey", "usr", "pwd");
$SearchContact = $ConstantContact->searchContactsByEmail($emailaddress);
try
{
// keep this... it is still useful
if( $SearchContact && isset( $SearchContact[0] ) && $SearchContact[0])
$DeleteContact = $ConstantContact->deleteContact($SearchContact[0]);
else
echo "Can't do nothin'";
}
catch( Exception $e )
{
// I'm making up a function "log" which will record that an error
// has taken place. It is a good idea to always log all exceptions
// so that you don't accidentally obfuscate something important
log( $e->getMessage() );
// do something useful
}
}
Как общее примечание, всегда лучше действовать упреждающе, чтобы предотвратить исключения, а не просто перехватывать их по факту. Я даже пойду настолько далеко, что скажу, что вы должны считать правилом всегда делать все, что в ваших силах, чтобы предотвратить возможность исключения, и использовать только попытку ... поймать как последнее возможное средство.