T-SQL从2005年就开始支持TRY-CATCH ,但直到2012才有THROW。THROW不带参数,其用法与C#和VB中catch块中的throw类似。也就是说,它会重新抛出异常,而不会丢失当时捕捉到的任何信息。它对于向重试队列记录或添加条目很有帮助,同时也可以通知应用程序出错。当THROW带参使用时,它类似于RAISERROR,不同之处在于它支持sys.messages之外的错误信息号(error number),并且它的严重级别(severity)总是16。还有一点与RAISEERROR不同的是,所有未被捕获的THROW错误总是批量终止。
THROW大大改进了错误处理,如更加易于使用、代码也更简洁,下面看看具体的实例:
通过RAISERROR抛出异常
通过THROW抛出异常:
带参数情况下,RAISERROR与THROW的对比:
更多信息可参考官网:http://msdn.microsoft.com/en-us/library/ee677615%28v=SQL.110%29.aspx