Триггер может отменить текущую транзакцию, которая приведет к отмене удаления. Как сказано выше, вы также можете использовать вместо триггера.
Это нельзя ввести как Exception, потому что в .Net можно создавать объекты, которые не являются производными от System.Exception. Это невозможно в C # или VB.Net, но возможно на других языках, основанных на CLR. Следовательно, API должен поддерживать эту возможность и использовать объект типа.
Таким образом, хотя он никогда не должен быть нулевым, на самом деле это может не быть System.Exception.
См. Раздел 10.5 спецификации CLI (в частности, правило 40 CLS) для получения дополнительных сведений
В дополнение к тому, что уже упомянул Джаред, вы можете безопасно привести к Exception
в .NET Framework 2.0 и более поздних версиях, если RuntimeCompatibilityAttribute (WrapNonExceptionThrows = true)
был применен к вашей сборке (будет добавлен автоматически компиляторами C # и VB).
После применения этого атрибута «исключения», не являющиеся исключениями, будут заключены в RuntimeWrappedException
.