假设我想告诉应用程序发生了什么/返回了SQL服务器。我们有这样的代码块:SQL尝试catch目的不清楚
BEGIN TRY
-- Generate divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
END CATCH;
GO
,并让我们有这样的代码块:
SELECT 1/0;
我的问题是: 两个零错误返回分工。我不明白的是,为什么当我在两种情况下都遇到错误时,我应该用try catch clausule来包围它? 是不是这个错误会在两种情况下传播到客户端应用程序?
好的,你已经非常清楚地解释了..另一个问题:为什么你更喜欢在DAL中完成所有这些'捕捉函数'? – 2010-06-10 14:59:35
,因为通常这些类型的事件(记录错误,仪表,追踪,操作人员的某些问题的通知等)被称为“交叉问题”,可能发生在任何系统模块中,而不仅仅是数据库..因此,从整体系统的角度来看,将这种功能置于可从系统中的任何地方访问的代码模块中,而不仅仅是从数据库中更有意义... – 2010-06-10 15:11:25
如果我想要某个方面导致记录被保存在数据库中,我会将该模块的代码写回数据库作为它的一个任务... – 2010-06-10 15:12:19