Трябва да използвате метода „опитай и улови изключение“, просто защото така или иначе трябва да го направиш.
Ако първо поставите отметка, няма какво да попречи на някой да вмъкне ред за този потребител между вашата проверка и вмъкването ви, в който случай потребителят ще бъде в таблицата, въпреки че вашата проверка не го е намерила.
Освен възможността да стартирате проверката и вмъкването в рамките на някакъв вид транзакция (така че никой друг да не може да вмъкне този потребител междувременно). не можете да сте сигурни, че не-изключението ще работи.
И въпреки че много СУБД предоставят поддръжка на транзакции, не знам за никое което ще заключи ред, който все още не сте вмъкнали :-)
Разбира се, ако вашето приложение е проектирано по такъв начин, че само вашият процес ще вмъква потребители (и ще се сериализира), можете да използвате метода check-first. Но бих вложил обилни коментари в смисъл, че ще трябва да бъде преразгледан, ако някога го увеличите.