Это, по сути, исключение, которое просто служит для быстрого выхода из функции. Исключения .NET не предназначены для этого, и их проглатывание - довольно плохая практика.
Исключения не должны использоваться для обработки потока данных. Если вы думаете, что что-то может потерпеть неудачу, вы можете выбросить исключение, но затем поймать это в первый подходящий момент. Допускать попадание исключения в функцию UnhandledException и его проглатывание - это просто плохая практика, которая может оставить ваше приложение в неизвестном состоянии (поскольку все методы, через которые проходит исключение, будут «прерваны»).
В этом случае, если вам нужно исключение в этом сабе, я бы поймал его при вызове:
try {
PerformActions()
} catch (AbortProcess) {
//do some cleaning up or just ignore
}
Таким образом, исключение обнаруживается близко к его источнику, и любая очистка ограничивается только этой функцией. Все остальные исключения будут переданы вашей функции UnhandledException, где лучшее, что вы можете сделать, - сообщить об ошибке и закрыть приложение.