CI 묻고 답하기

제목 try catch finally에서 Exception 에러가 났는데, catch를 타지 았네요
카테고리 CI 2, 3
글쓴이 바보돌쇠 작성시각 2018/04/04 17:32:33
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14126   RSS
​/**
 * Ajax 회원탈퇴 처리
 *
 * @return tring
 */
public function AjaxMemberOut()
{
    $str_comment = [];
    // AJAX 접근 체크
    if ( $this->input->is_ajax_request() ) {
        try {
            $memno     = $this->input->post( 'memno' );
            $password = $this->input->post( 'password' );

            $memberInfo = $this->M_memberInfo->getWithdrawalApplication( $memno );

            if ( $memberInfo['ok'] == 1 ) {
                $str_comment = [
                    'MSG'  => $this->lang->line( 'txt_mypage_after_24hours_withdraw' ), // 회원가입 후 24시간 이후 탈퇴가능
                    'CODE' => 'CODE900',
                ];
            } else {
                // 패스워드 맞는지 여부 확인
                if ( password_verify( $password, $memberInfo['passwd1'] ) ) {
                    // 탈퇴처리
                    $result = $this->resumeinfos->deleteMemberAllInfo( $memno );

                    //탈퇴한 회원정보 업데이트
                    $params = [
                        'code' => $this->lang->line( 'txt_mypage_withdraw' ), // 탈퇴
                    ];
                    $result = $this->M_memberInfo->updateMemberInfo( $params, 'DBNAME', 'id' );

                    if ( $result ) {
                        $str_comment = [
                            'MSG'  => $this->lang->line( 'txt_mypage_completed_withdraw' ), // 탈퇴처리 완료
                            'CODE' => 'CODE200',
                        ];
                    }

                    // 로그아웃 처리 세션,쿠키 삭제


                } else {
                    throw new Exception( '패스워드가 틀립니다', 'CODE999' );
                }
            }

        } catch ( Exception $e ) {
            $str_comment = [
                'MSG'  => $e->getMessage() . '(ERROR CODE:' . $e->getCode() . ')',
                'CODE' => 'CODE901',
            ];
        } finally {
            echo json_encode( $str_comment );
        }

    } else {
        // Ajax 접근이 아니면...
        alert( $this->lang->line( 'txt_mypage_wrong_approach' ) );
    }
}

 

패스워드 입력이 없어서,  "패스워드가 틀립니다" Exception 에서 걸려서 catch 구문을 타야 되는데

실제로는 바로 finally 구문 만을 타네요

뭣 때문에 catch 구문을 타지를 않는지를 모르겠네요

 다음글 IE 한글 URL 문제 (2)
 이전글 ajax post 로 데이터를 넘겨주는데 영문은 컨트롤... (1)

댓글

변종원(웅파) / 2018/04/04 23:03:58 / 추천 0

Exception 부분까지 들어가지 않는건 아닌지요? 데이터가 없으니 조건을 검증할 수 없습니다.

password_verify( $password, $memberInfo['passwd1'] ) <- 이 부분 값 찍어보세요.

구문상 문제 없습니다. php5.5 이상이시죠?

바보돌쇠 / 2018/04/05 07:52:24 / 추천 0

Exception 까지는  들어값니다, 당연히 catch를 타야되는데, 타지를 않아서요

심지어는 윗단에서 throw new Exception을 던져도 catch를 타지를 않아서... 멘붕입니다...ㅋ

XAMPP 사용중이고 PHP 7.1.2 입니다

바보돌쇠 / 2018/04/05 08:17:30 / 추천 0

아... Exception에서 코드 값을 문자를 써서 문제 였네요... ㅡ,.ㅡ;

인자값을 문자로 써서가 아니라 홑따옴표를 써서 문제였습니다. ㅡ,.ㅡ;;;

숫자는 상관이 없는데, 문자는 안되는 군요...