С исключениями связано больше накладных расходов, чем с обычными функциями управления потоком программ (если, иначе, elseif и т. Д.), Так что чисто с этой точки зрения первый вариант быстрее.Исключения являются хитрыми вещами, и поскольку они являются относительно новым дополнением к PHP, люди склонны злоупотреблять ими.Обычно я пытаюсь генерировать исключения только в тех случаях, когда в коде исключительные обстоятельства.
Например, если у меня есть функция, в которой допустимые входные значения представляют собой целые числа 1-100, то я бы вернул true для входа 40, false для входа 493 и выдал исключениедля входа «кумкват».
Кстати, вы можете написать первую версию вашей функции в одной строке:
function checkStr ($str)
{
return (preg_match('/[^0-9a-zA-Z]/', $str) > 0));
}