Ограничения на базу данных создаются из структуры ваших объектов. Другими словами, если вы нарушаете ограничения, что-то не так с вашими объектными отношениями. Например, у вас есть A, указывающее на B, но нет B, указывающего на A, или вы указали какое-то отношение, чтобы не допускать нулевых значений, и есть нулевое.
По этой причине вам следует не полагаться на ограничения для поддержания согласованности вашей объектной модели. Было бы лучше и меньше подвержено ошибкам, если на самом деле вы убедились, что ваша объектная модель была согласованной, проверив объектную модель, а не полагаясь на базу данных, чтобы сделать это.
Кроме того, исключение не является хорошей идеей. Исключения существуют для обработки ошибок, они должны быть «нормальным» путем работы.
По этой причине, исходя из вашего примера, я бы посоветовал вам проверить валюту, а если ее нет, не добавлять свои данные в постоянное хранилище.