К счастью для нас, C# 3.0 включает Cast
операция:
int[] result = enumArray.Cast<int>().ToArray();
, Если Вы прекращаете использовать массивы и начинаете использовать IEnumerable<>
, можно даже избавиться от эти ToArray()
вызов.
вы можете использовать raiserror
. Подробнее см. здесь
- из MSDN
BEGIN TRY
-- RAISERROR with severity 11-19 will cause execution to
-- jump to the CATCH block.
RAISERROR ('Error raised in TRY block.', -- Message text.
16, -- Severity.
1 -- State.
);
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();
-- Use RAISERROR inside the CATCH block to return error
-- information about the original error that caused
-- execution to jump to the CATCH block.
RAISERROR (@ErrorMessage, -- Message text.
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
END CATCH;
ИЗМЕНИТЬ
Если вы используете SQL Server 2012+, вы можете использовать предложение throw
. Вот подробности.
Вы ищете RAISERROR
.
Из MSDN:
Создает сообщение об ошибке и инициирует обработку ошибок для сеанс. RAISERROR может либо ссылка на определяемое пользователем сообщение хранится в каталоге sys.messages просматривать или создавать сообщение динамически. Сообщение возвращается как сервер сообщение об ошибке вызывающему приложение или связанный CATCH блок конструкции TRY… CATCH.
CodeProject имеет хорошую статью , которая также подробно описывает, как она работает и как ее использовать.
В SQL есть механизм вывода ошибок
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
Просто найдите Raiserror в электронной документации. Но ... вы должны сгенерировать ошибку соответствующей серьезности, ошибка с уровнем серьезности от 0 до 10 не приведет к переходу к блоку catch.