투케이2K

504. (kotlin/코틀린) [유틸 파일] getExceptionType : Exception 발생 타입 확인 본문

Kotlin

504. (kotlin/코틀린) [유틸 파일] getExceptionType : Exception 발생 타입 확인

투케이2K 2024. 5. 11. 09:42

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] getExceptionType : Exception 발생 타입 확인
        // -----------------------------------------------------------------------------------------
        fun getExceptionType(e: Throwable): String {

            /**
             * // -----------------------------------------
             * [getExceptionType 메소드 설명]
             * // -----------------------------------------
             * 1. Exception 발생 타입 확인
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * C_Util.getExceptionType(e)
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 :
             *
             * JSONException
             *
             * // -----------------------------------------
             */


            // [리턴 값 선언]
            var returnData = ""


            // [로직 처리 실시]
            try {

                // [StringWriter 선언 에러 발생 내용 추가]
                val stringWriter = StringWriter()
                e.printStackTrace(PrintWriter(stringWriter))

                // [에러 메시지 확인]
                val errMsg = e.message.toString()

                // [특정 에러 메시지가 시작 되는 인덱스 위치]
                val errIdx = stringWriter.toString().indexOf(errMsg)

                if (errIdx >= 0) {
                    var parseLog = stringWriter.toString().substring(0, errIdx) // [에러 타입 파싱 수행 : Ex : JSONException]
                    parseLog = parseLog.replace(":".toRegex(), "")

                    // [리턴 변수 삽입]
                    returnData = parseLog.replace(" ".toRegex(), "")
                }

            } catch (ez: Exception) {
                S_Log._printStackTrace_(null, S_FinalMsg.LOG_BUG_STATE, null, ez)
            }


            // [널 대응 추가]
            if (returnData.trim { it <= ' ' } == "" == true) {
                returnData = "Exception"
            }


            // [로그 출력 실시]
            ///*
            // ===============================================================
            S_Log._D_("Exception 발생 타입 확인", arrayOf(
                "RETURN :: $returnData"
            ))
            // ===============================================================
            // */


            // [리턴 반환 실시]
            return returnData
        }

 

반응형
Comments