본문 바로가기
컴퓨터관련/MS-SQL

MS-SQL에서의 TRY, CATCH 이용 에러 예외처리

by 빛과 어둠사이 2020. 2. 28.
728x90
반응형
SMALL

오늘은 MSSQL에서의

에러 예외처리 하는 방법을

정리해보고자 합니다.


많은 개발 언어들이

TRY, CATCH문을 이용하여

에러가 났을 때,

예외처리를 하는 것을

지원하고 있습니다.



이는, SQL SERVER에서도 

동일하게 지원을 해주고 있습니다.

그래서 이번에는 SQL SERVER에서의

TRY CATCH문을 이용해서

ERROR 예외처리 하는 방법을

정리해보고자 합니다.




우선, 기본적인 사용방법을

정리해보도록 하겠습니다.

begin try 
	일반 실행;
end try
begin catch
	에러났을 때;
end catch

기본 사용방법은

위와 같습니다.


위의 쿼리를 정리하면

다음과 같습니다.

begin으로 해서

실행되는 부분과,

에러가 났을 때 처리하는 부분을

분리하였습니다.


그리고 try 안에는

정상적으로 실행이 되는 부분입니다.


그리고 이 부분에서 에러가 발생이 된다면,

catch부분으로 가서

실행이 되게 되는 것입니다.




이제 실제 사용 예제를 확인해보도록 하겠습니다.

begin try 
	select 1 / 1, '에러안남' ;
	select 1 / 0, '에러남' ;
	select 1 / 1, '에러이후' ;
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

위처럼 해보았습니다.


1/1로 해서 에러가 안나는 것을

확인할 수 있습니다.

그리고 1/0으로 해서

에러가 발생이 될 것입니다.

이 때, catch로 빠져서

그 이후의 1/1 부분은

실행이 되지도 않을 것입니다.



위 쿼리를 실행시키면

결과는 다음과 같이 나오게 됩니다.



위처럼 나오는 것을 확인할 수 있습니다.

제가 설명한 것처럼 우선 1/1과 에러안남

이라는 결과가 나오게 됩니다.



그리고 1/0으로 했기 때문에

에러가 발생이 될 것입니다.

ERROR가 발생 되었기 때문에

catch로 빠지게 되어서

에러가 발생이 되었다는

내용이 나오게 되는 것입니다.



그리고 저는 catch안에

시스템함수를 많이 넣어놓았습니다.

에러가 발생이 되었을 때,

여러 내용을 확인할 수 있어서

넣었습니다.


저 시스템함수들에 대한

간단한 설명을 적도록 하겠습니다.


• ERROR_NUMBER() : 오류 번호를 반환

• ERROR_SEVERITY() :  심각도를 반환

• ERROR_STATE() :  오류 상태 번호를 반환

• ERROR_PROCEDURE() :  오류가 발생한 저장 프로시저 또는 트리거의 이름을 반환

• ERROR_LINE() : 오류를 발생시킨 루틴 내의 줄 번호를 반환

• ERROR_MESSAGE() :  오류 메시지의 전체 텍스트를 반환



위처럼 이렇게 됩니다.

필요에 따라서 넣거나

빼거나 하시면 되실 것 같습니다.




오늘은 SQL SERVER에서의

TRY CATHC문에 대해 정리를 해 보았습니다.


함수나 프로시저 등을 선언하고,

개발하고, 사용을 할 때

에러가 발생되었을 때

처리할 수 있도록

이렇게 해 놓으면 좋을 것 같습니다.



이상으로 MSSQL에서의 

TRY CATCH문을 이용하여

에러 예외처리 하는 방법이였습니다~



728x90
반응형
LIST