[Chaincode] panic recover 샘플

체인코드 개발시 런타임 에러로 인해 panic 발생으로 체인코드 도커가 내려가는 상황이 잦음

도커 명령어로 해당 에러가 무엇인지 확인해야 하고 체인코드는 다음 실행됐을때 다시 도커가 올라가면서 작업이 수행됨

이러한 방법은 에러 추적이 어려워짐

Go언어의 panic, recover를 공부하면서 이런 문제를 어느정도 보완할 수 있을것으로 생각

panic

Go 내장함수인 panic()함수는 현재 함수를 즉시 멈추고 현재 함수에 defer 함수들을 모두 실행한 후 즉시 리턴한다. 이러한 panic 모드 실행 방식은 다시 상위함수에도 똑같이 적용되고, 계속 콜스택을 타고 올라가며 적용된다. 그리고 마지막에는 프로그램이 에러를 내고 종료하게 된다.

recover

Go 내장함수인 recover()함수는 panic 함수에 의한 패닉상태를 다시 정상상태로 되돌리는 함수이다.

smaple code

샘플 프로젝트로 직접 확인해보고 개선해 나갈 예정