June 25, 2021
test
| 0 to 10 | Messages with a severity level of 0 to 10 are informational messages and not actual errors. |
| 11 to 16 | Severity levels 11 to 16 are generated as a result of user problems and can be fixed by the user. For example, the error message returned in the invalid update query, used earlier, had a severity level of 16. |
| 17 | Severity level 17 indicates that SQL Server has run out of a configurable resource, such as locks. Severity error 17 can be corrected by the DBA, and in some cases, by the database owner. |
| 18 | Severity level 18 messages indicate nonfatal internal software problems. |
| 19 | Severity level 19 indicates that a nonconfigurable resource limit has been exceeded. |
| 20 | Severity level 20 indicates a problem with a statement issued by the current process. |
| 21 | Severity level 21 indicates that SQL Server has encountered a problem that affects all the processes in a database. |
| 22 | Severity level 22 means a table or index has been damaged. To try to determine the extent of the problem, stop and restart SQL Server. If the problem is in the cache and not on the disk, the restart corrects the problem. Otherwise, use DBCC to determine the extent of the damage and the required action to take. |
| 23 | Severity level 23 indicates a suspect database. To determine the extent of the damage and the proper action to take, use the DBCC commands. |
| 24 | Severity level 24 indicates a hardware problem. |
| 25 | Severity level 25 indicates some type of system error. |
Introduced in SQL SERVER 2005
|
Introduced in SQL SERVER 2012.
|
||
It
always generates new exception and results in the loss of the original
exception details. Below example demonstrates this:
|
BEGIN TRY DECLARE @result INT--Generate divide-by-zero error SET @result = 55/0END TRYBEGIN CATCH THROWEND CATCH
RESULT:
RESULT:
Msg 8134, Level 16, State 1, Line 4 Divide by zero error encountered.
With above example it is clear that THROW statement is very simple for RE-THROWING the exception. And also it returns correct error number and line number.
|
||
In the below Batch of statements the PRINT statement after RAISERROR statement will be executed.
BEGIN PRINT 'BEFORE RAISERROR' RAISERROR('RAISERROR TEST',16,1) PRINT 'AFTER RAISERROR'ENDBEFORE RAISERROR Msg 50000, Level 16, State 1, Line 3 RAISERROR TEST AFTER RAISERROR |
BEGIN PRINT 'BEFORE THROW'; THROW 50000,'THROW TEST',1 PRINT 'AFTER THROW'END
RESULT:
BEFORE THROW Msg 50000, Level 16, State 1, Line 3 THROW TEST BEGIN TRY DECLARE @RESULT INT = 55/0 END TRYBEGIN CATCH PRINT 'BEFORE THROW'; THROW; PRINT 'AFTER THROW'END CATCH PRINT 'AFTER CATCH'
RESULT:
BEFORE THROW
Msg 8134, Level 16, State 1, Line 2 Divide by zero error encountered. |
||
Can set the severity of error
|
|||
AS BEGIN TRY 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
test
Hello, my name is Jack Sparrow. I'm a 50 year old self-employed Pirate from the Caribbean.
Learn More →