| 제목 | try catch finally에서 Exception 에러가 났는데, catch를 타지 았네요 | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | 바보돌쇠 | 작성시각 | 2018/04/04 17:32:33 | 
| 
                         | 
                |||
                        
/**
 * 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
                             
                             | 
                    
| 
                             
                                바보돌쇠
                                /
                                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에서 코드 값을  
 숫자는 상관이 없는데, 문자는 안되는 군요...  | 
                    
Exception 부분까지 들어가지 않는건 아닌지요? 데이터가 없으니 조건을 검증할 수 없습니다.
password_verify( $password, $memberInfo['passwd1'] ) <- 이 부분 값 찍어보세요.
구문상 문제 없습니다. php5.5 이상이시죠?