1.RAISERROR
返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。
2.语法:
引用
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ] )
[ WITH option [ ,...n ] ]
3.参数:
1)msg_id
使用 sp_addmessage 存储在 sys.messages 目录视图中的用户定义错误消息号。用户定义错误消息的错误号应当大于 50000。如果未指定 msg_id,则 RAISERROR 引发一个错误号为 50000 的错误消息。
2)msg_str
用户定义消息,格式与 C 标准库中的 printf 函数类似。该错误消息最长可以有 2,047 个字符。如果该消息包含的字符数等于或超过 2,048 个,则只能显示前 2,044 个并添加一个省略号以表示该消息已被截断。请注意,由于内部存储行为的缘故,代替参数使用的字符数比输出所显示的字符数要多。例如,赋值为 2 的代替参数 %d 实际在消息字符串中生成一个字符,但是还会在内部占用另外三个存储字符串。此存储要求减少了可用于消息输出的字符数。当指定 msg_str 时,RAISERROR 将引发一个错误号为 50000 的错误消息。
3)@local_variable
是一个可以为任何有效字符数据类型的变量,其中包含的字符串的格式化方式与 msg_str 相同。@local_variable 必须为 char 或 varchar,或者能够隐式转换为这些数据类型。
4)severity
用户定义的与该消息关联的严重级别。当使用 msg_id 引发使用 sp_addmessage 创建的用户定义消息时,RAISERROR 上指定的严重性将覆盖 sp_addmessage 中指定的严重性。
任何用户都可以指定 0 到 18 之间的严重级别。只有 sysadmin 固定服务器角色成员或具有 ALTER TRACE 权限的用户才能指定 19 到 25 之间的严重级别。若要使用 19 到 25 之间的严重级别,必须选择 WITH LOG 选项。
4.简单例子:
引用
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;
参考:
http://msdn.microsoft.com/zh-cn/library/ms178592.aspx
分享到:
相关推荐
当程序出现错误时,系统会自动引发异常。...raise 语句有如下三种常用的用法: raise:单独一个 raise。该语句引发当前上下文中捕获的异常(比如在 except 块中),或默认引发 RuntimeError 异常。 raise 异常
本源码演示使用Delphi 中的ExceptionErrorMessage函数,抛出异常信息,该函数用于获取当前异常信息。本源码其实就是ExceptionErrorMessage函数的用法示例,异常处理在程序中很常见,一个优秀的程序,异常处理是不能...
下面我们将深入探讨`raise`的使用方法。 1. **异常的自动引发与手动引发** 当Python程序遇到错误时,如除以零、访问不存在的变量等,会自动引发异常。而`raise`关键字则允许我们根据条件或逻辑在代码中主动引发...
用法 require "angry_raise" raise! "an error occured" # "RuntimeError: an error occured!" raise! SomeError , "an error occured" # "SomeError: an error occured!" raise! SomeError . new ( "an error ...
### Python中的异常处理try/except/finally/raise用法分析 #### 一、异常处理概述 在编程过程中,经常会遇到一些不可预知的情况,这些情况会导致程序无法继续正常执行,这种情况被称为异常。为了确保程序的健壮性...
在上面的代码示例中,通过`Raise`方法人为触发了一个“溢出”错误,然后设置Err对象的属性,以便在处理错误时提供更详细的帮助信息。通过检查`Err.Number`,我们可以判断是否真的发生了错误,如果发生了错误,可以...
显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常。例如,你希望用TIMEOUT_ON_RESOURCE错误检测新的运行时异常处理器,你只需简单的在程序中使用下面的语句: ...
SQL Server 2005 有一个 RaiseError 语句,可以抛出异常,但却不能直接抛出原来的异常,所以需要重新定义发生的错误。 解决方案变成了这样: ```sql declare @r int set @r = 1 while @r begin begin tran ...
总的来说,处理`requests`库中的`ConnectionError`需要结合异常处理、重试机制以及适当的错误排查方法。在实践中,不断地试验和学习是解决这类问题的关键。如果遇到难以解决的问题,可以参考官方文档、社区讨论或...
自定义异常可以通过`RAISE_APPLICATION_ERROR`函数创建,然后在异常处理块中捕获并处理。 **动态游标**和**动态SELECT语句**适用于处理不确定的查询结构,它们允许在运行时构建SQL语句。这在处理动态条件或未知列...
本讨论将深入探究Python中面向对象属性的使用方法,包括类的定义、对象的创建、属性的访问、属性的封装以及特殊方法如`__init__`和`__getattr__`等。 首先,我们需要了解类(Class)是面向对象编程的基础,它是创建...
这样,`_id`字段就成为`Item`类的一部分,你可以在爬虫中直接使用它,而不会引发`KeyError`。 以上两种解决方案都可以有效处理`KeyError: ‘xxx does not support field: _id’`的问题。选择哪种方法取决于你的具体...
`%attr`是连接属性,如`PrintError`和`RaiseError`控制错误处理。`disconnect()`方法用于关闭数据库连接。 4. 数据库句柄方法: - `do()`:执行非SELECT类型的SQL语句,如INSERT、UPDATE或DELETE,返回受影响的...
在错误处理中,`RaiseError()`能帮助我们主动抛出错误并提供详细信息。 总结,PB的系统函数是其强大功能的重要组成部分,理解并熟练运用这些函数能够提高开发效率,简化代码编写,从而更好地服务于各种复杂的应用...
用法基本的继承 CodeError::Base 以创建您自己的基于代码的错误。 您需要使用散列分配“error_codes”以定义您自己的错误代码映射。 class MyError < CodeError::Base error_codes({ purchase_info_incorrect: { ...
sql server数据库中raiserror函数的用法 server数据库中raiserror的作用就和asp.NET中的throw new Exception一样,用于抛出一个异常或错误。这个错误可以被程序捕捉到。 raiserror的常用格式如下: raiserror(‘错误...
跑模型时出现RuntimeError: CUDA out of memory.错误 查阅了许多相关内容,原因是:GPU显存内存不够 简单总结一下解决方法: 将batch_size改小。 取torch变量标量值时使用item()属性。 可以在测试阶段添加如下代码:...
总体而言,DBI手册是一份详尽的参考资料,它不仅覆盖了DBI模块的使用方法,还包括了大量关于数据库操作的最佳实践和注意事项,对于任何希望提高Perl数据库编程能力的开发者来说,这份手册都是一个宝贵的资源。