我读到这ERROR_STATE()
可以帮助区分源代码中可能发生相同类型错误的不同状态/位置。但我并不清楚它如何有用。
MSDN 状态:
ERROR_STATE()
返回导致运行 TRY...CATCH 构造的 CATCH 块的错误的状态编号。
如何才能真正使用?有人能给我一个例子吗,这篇参考文章中提供的例子并不能很好地帮助我解释事情吗?
我读到这ERROR_STATE()
可以帮助区分源代码中可能发生相同类型错误的不同状态/位置。但我并不清楚它如何有用。
MSDN 状态:
ERROR_STATE()
返回导致运行 TRY...CATCH 构造的 CATCH 块的错误的状态编号。
如何才能真正使用?有人能给我一个例子吗,这篇参考文章中提供的例子并不能很好地帮助我解释事情吗?
SQL Server 错误状态的目的是让 SQL Server 开发团队能够在代码中识别引发系统错误的确切位置,因为在多个位置引发了许多错误。
作为最终用户(即使用 SQL Server 的应用程序开发人员),您可以类似地使用传入的状态,
RAISERROR
以便您的产品支持人员可以识别过程引发错误的位置,例如:看看这两种状态如何让您稍后区分哪个错误案例被击中。在您说“但我可以查看错误消息”之前,我要告诉您一个词:国际化。
不,它不能帮助您找到有关错误发生位置的任何信息。这是一个简单的例子。如果您尝试除以 0,您会收到一条包含大量详细信息的错误消息:
结果:
看到名为
State
的,值为 1 吗?ERROR_STATE()
返回此值。因此,如果您使用TRY/CATCH
:结果:
就这样。在大多数情况下没有用。我建议您在深入了解听起来很有用的特定功能之前,更多地阅读一般的错误处理。
http://msdn.microsoft.com/en-us/library/ms175976.aspx
http://www.sommarskog.se/error_handling_2005.html
简短的回答 - 它不能。ERROR_STATE 本质上是 ERROR_NUMBER 的细分。它不能告诉你是哪一行代码导致了错误(除非 ERROR_NUMBER 和 ERROR_STATE 一起告诉你错误的原因,然后就很明显原因是什么)。