异常捕捉
错误信息的返回,在网上找的记录一下
begin try
--...sql语句块
end try
begin catch
--...sql语句块
ERROR_NUMBER() --返回错误号。
ERROR_SEVERITY() --返回严重性。
ERROR_STATE() --返回错误状态号。
ERROR_PROCEDURE() --返回出现错误的存储过程或触发器的名称。
ERROR_LINE() --返回导致错误的例程中的行号。
ERROR_MESSAGE() --返回错误消息的完整文本。 该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。
end catch
例子:
1、创建一个捕捉异常的表
create table LogTable
(
ID int identity(1,1),--错误序号
ErrorNumber int,--错误号
ErrorSeverity int,--严重性
ErrorState int,--错误状态号
ErrorProducure varchar(200),--出现错误的存储过程或 触发器的名称
ErrorLine int,--导致错误的例程中的行号
ErrorMessage varchar(200)--错误消息的完整文本
)
2、创造一个异常
if exists (select * from sysobjects where id=OBJECT_ID(N'getWrong') AND xtype='P')
drop proc getWrong
go
create proc getWrong
as
begin
-----------------制造异常
begin try
select 1/0;
-----------------捕获异常
end try
begin catch
insert into LogTable values(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),
ERROR_PROCEDURE(), ERROR_LINE() ,ERROR_MESSAGE())
end CATCH
end
--执行存储过程
exec getWrong
--查看日志表
select * from LogTable
--查看系统日志表
select * from sys.messages where message_id=8134 and language_id=2052
系统日志表执行如下:
日志表执行如下: