'예외 처리'에 해당되는 글 1

  1. 2007.12.05 [Javascript] 자바스크립트에서 try..catch
IT_Expert/Tag-Script | Posted by 낫기법필 2007. 12. 5. 09:29

[Javascript] 자바스크립트에서 try..catch

return false가 되어야 하는데 중간에 잘못된 에러 때문에 자꾸 return true 먹으니 황당하다...
일전에
자바스크립트에서 try.. catch 쓰는 것을 전에 본적이 있어 찾아보고 스크래핑한다. ^^;

function check()
{  
    try
    {
         // 내용
    }
    catch(ex)
    {
        alert('실행 중 비정상 코드가 발생하였습니다 [ ' + ex.message + ' ]');   
        //[ ' + ex.name + ' ][ ' + ex.number + ' ][ ' + ex.description + ' ]'
        return false;
    }
}

이런 식으로 사용하면 된다는군.

조건에 걸려서 return false 되는거라면 괜찮지만 중간에 변수 선언을 잘못했거나 없는 컨트롤 들을 이용하는 등의 여러가지의 예외 경우의 수가 있기 때문에 이를 이용하면 원치 않은 이벤트 실행을 막을 수 있겠다.

그래서 결국 막았다. 좋군


찾아보니 샘플 예제로 좋은 것이 있으니 첨부하자. ^^

##################################################################
<SCRIPT>
br='<BR>'; // 줄바꿈 변수
var err; // 오류 변수 선언
function CheckIt(obj){
  str='<font color=blue>오류 없슴</font>'; // 오류 정보 초기화
  var s=obj.inString.value; // 임시 변수를 받은 값으로 만듬
  var testStr=''; // 검정할 문자열 변수를 선언
  for(i=0;i<s.length;i++){ // \\문자를 \문자로 만드는 루프, 특수문자 처리를 여기서 하면 된다.
    if((escape(s.charCodeAt(i))==92)&&(escape(s.charCodeAt(i+1))==92) continue;
    else testStr+=s.charAt(i);
  } // for.. 루프 문장 종료
  try{eval(testStr)}; // 문자열을 Javascript code로 검정
  catch(err){ // 발생된 오류개체를 만들고, 오류 정보를 출력
    str='오류 '+err;
    str+=' <FONT color=blue>'+err.name+'</FONT> ';
    str+='#<a href=../../refers/errcom.html><font color=red>'+(err.number & 0xFFFF)+'</font></a>';
    str+=' 장치('+(err.number>>16 & 0x1FFF)+')';
    str+=' "<font color=brown>'+err.message+'</font>"';
  } // catch 문장 종료
  errResult.innerHTML=str; // 결과 문자열 을 id=errResult인 개체의 HTML 내용으로 넣어줌
} // 기능함수 종료
</SCRIPT>

<DIV style="width:95%;margin-left:100;margin-right:100;text-align:center"> // 입력 에리아 블럭
오류 검정을 위한 Javascript code를 넣어 보라.
<FORM name=errform>
<textarea name=inString  wrap="physical" style="width:50em;height:100"></textarea> // 입력 텍스트에리아
<INPUT type=button value="오류확인" onClick="CheckIt(this.form)">
<INPUT type=button value="다시하기" onClick="errResult.innerHTML='';this.form.reset()">
</FORM></DIV>

<DIV id=errResult class=show
  wrap=physical style="margin-right:100;height:2.2em" title="결과">결과 표시 위치</DIV> // 오류 결과 표시 위치

===================================================================================

  try {
    for (var i=0; i<oTbl.rows.length; i++) {            // Row Index만큼 Loop
      for (var j=0; j<oTbl.rows[i].cells.length; j++) { // Cell Index 만큼 Loop
        if (iCell == -1 || iCell == j) {                              // 비교할 Cell Index와 현재 Cell Index가 동일하면,,
          vCur = oTbl.rows[i].cells[j].outerText;

          if (vPre == vCur) {                          // 이전값과 현재값이 동일하면,,
            if (bChk == false) {                        // 처음 일치시에만 적용
              iRow = i-1;
              bChk = true;
            } // end of if

            cnt++;
            oTbl.rows[iRow].cells[j].rowSpan = cnt;
            oTbl.rows[i].deleteCell(j);
          } else {                                      // 이전값과 현재값이 다르면,,
            cnt = 1;
            vPre = vCur;
            bChk = false;
          } // end of if

          break;
        } // end of if
      } // end of for
    } // end of for
  } catch (e) {
    alert(e.description);
  } // end of try{} catch{}
} // end of function

출처 : http://nosmoke.tistory.com/72
##################################################################