В этом фрагменте кода нет ничего плохого, если вы не хотите, чтобы, например, исключение блока pl / sql распространялось дальше. Если вы делаете это нарочно, это не плохой код или ошибка. Это подвох в пл / sql. И в коде могут быть ситуации, когда у вас есть вложенные блоки BEGIN / EXCEPTION / END, и вы можете не захотеть, чтобы транзакция потерпела неудачу только в случае сбоя определенного сечения кода. Вы не можете утверждать, что это плохое кодирование, если вы делаете это намеренно по любой причине / требованию.
BEGIN
--something important here
--something even more important here
BEGIN
--something secondary goes here but not important enough to stop the process or
--log a message about it either
--maybe send an informative email to the support group or
--insert a log message when debugging the process or
--the list could go on and on here
EXCEPTION
--I don't care if this block fails, absorbing all errors regardless of type
WHEN OTHERS THEN NULL;
END;
-- something super important here, must happen
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- do something useful for this exception
WHEN OTHERS THEN
-- do something by default if we don't expect this error
END;