とにかくやらなければならないという理由だけで、「try-and-catchexception」メソッドを実行する必要があります。
最初にチェックした場合、チェックと挿入の間に誰かがそのユーザーの行を挿入するのを止めることはできません。その場合、チェックでユーザーが行を見つけられなくても、ユーザーはテーブルに表示されます。
ある種のトランザクション内でチェックアンドインサートを実行できることには至っていません(そのため、他の誰もそのユーザーを暫定的に挿入することはできません)。非例外が機能するかどうかは定かではありません。
また、多くのDBMSがトランザクションサポートを提供していますが、何も知りません。 まだ挿入していない行がロックされます:-)
もちろん、プロセスのみがユーザーを挿入する(そしてシリアル化する)ようにアプリケーションが設計されている場合は、最初にチェックする方法を使用できます。しかし、スケールアップした場合は再検討する必要があるという趣旨のコメントをたくさん入れておきます。