>웹 프론트엔드 >JS 튜토리얼 >javascript의 try...catch...finally_javascript 기술 이해하기

javascript의 try...catch...finally_javascript 기술 이해하기

WBOY
WBOY원래의
2016-05-16 15:23:381278검색

본 글은 자바스크립트의 try...catch...finally 사용법을 분석하여 참고하실 수 있도록 공유합니다

조금 더 복잡하면 조건부 판단을 수행하려면 판단문을 사용해야 합니다. If 조건 else는 이미 프로그램 코드를 작성하는 프로그래머에게 매우 익숙합니다.

아주 간단하다고 생각하시면 if else 조건 판단문과 try catch를 혼합하여 처리할 수도 있습니다. try catch는 어떤 객체든 처리할 수 있지만, throw를 통해 오류문을 던진 다음, 객체를 Throw하세요. 또는 객체의 오류입니다. 오늘은 try...catch에 대해서만 설명합니다. 다음 예제에서는 각각 배열, 시간, 프로토타입 함수, 숫자 유형 등에 대해 설명합니다.

function trycatch () {
  var array = [234],
    newdate = new Date(),
    fun = function(){},
    is = 12.22,
    call;
  try{
    throw array + '\n' + newdate.toLocaleString() + ' \n' + fun.prototype.constructor + 
    '\n' + (typeof is == 'number') +' \n' + call ; //小心local后面还有一个'e'
  }
  catch(e){
    console.log(e);
  }
  finally{
    console.log('err finally');
  }
}
trycatch () 

// 输出:

// 234

// 2015/10/12 下午10:07:03 

// function (){}

// true 

// undefined

더 정확하게 말하면 try에 오류가 발생할 수 있는 문을 넣어보세요. try 문이 실행되기 시작하고 오류가 발생하면 catch는 내부 문과 try의 해당 오류 메시지를 실행합니다. finally 문을 실행하는 경우 finally 문은 try 문과 catch 문이 실행된 후에만 실행됩니다. try에서 예외가 발생하는지 또는 catch 문이 캡처되는지 여부에 관계없이 finally 문이 실행됩니다.

function trycatch () {
  try{
    throw new Error('koringz');
  }
  catch(e){
    console.log(e.message);
  }
  finally{
    console.log('err finally');
  }
}
trycatch ()
// 输出:
// koringz
// err finally

try를 통해 오류 문을 던지면 오류 메시지 // koringz가 catch에 캡처되지만 동일한 finally도 // err finally를 출력하는 것을 볼 수 있습니다. try catch 워크플로의 처리 방법은 이해하지만 finally 블록의 코드 핸들러는 이해하지 못합니다. 과거 finally 문에 대한 우리의 일관된 사고 방식에 따르면 finally 출력은 try 및 catch에 의해 제한되거나 제한되지 않습니다. 다음은 finally의 여러 출력 데모 코드입니다.

function trycatch () {
  try{
    throw new Error('koringz');
  }
  finally{
    console.log('err finally');
    return console.log('new finally')
  }
}
trycatch ()
// err finally
// new finally

위에 표시된 대로 try는 오류 문을 던지고 finally의 출력 결과는 다음과 같습니다. // err finally // new finally.

function trycatch () {
  try{
    throw new Error('koringz');
  }
  catch(e){
    console.log('err finally');
    return console.log('new finally')
  }
}
trycatch ()
// err finally
// new finally

위와 같이 try는 오류문을 던지고, catch는 위와 같이 오류 출력 결과를 캡처합니다. // 마침내 오류가 발생했습니다. // 마침내 새로운 것입니다.

try 문을 수정하는 경우:

function trycatch () {
  try{
    // 
  }
  catch(e){
    console.log('err finally');
    return console.log('new finally')
  }
}
trycatch ()
// 空(viod)
// 空(viod)

결과적으로 출력이 비어 있습니다. // 무효(viod). try가 오류를 발생시키지 않았기 때문에 catch가 예외를 catch하지 않았으므로 출력 결과가 비어 있습니다.

그럼 다음 사례를 통해 try catch 문의 예외 처리에 대해 더 잘 이해할 수 있을 것입니다.

try{
  try{
    throw new Error('open');
  }
  catch(e){
    console.info(e.message);
    throw e
  }
  finally{
    console.log('finally');
  }
}
catch(e){
  console.log('op',e.message);
}
// open
// finally
// op open

오류를 일으킬 수 있는 try 코드 블록에서 try catch를 중첩할 때 중첩된 코드 블록을 통해 오류를 일으킬 수 있는 문을 던지고 try throw new Error('open'); 다음에 중첩된 try를 전달합니다. 처리를 위해 중첩된 catch에 오류가 발생합니다. 마침내 중첩된 finally를 실행한 후 마지막 결과 // op open이 표시됩니다. 실제로 중첩된 catch에서 캡처한 오류 정보는 가장 바깥쪽 catch에 던져집니다. // 오픈

즉, 주어진 예외는 가장 가까운 catch 블록에 의해 한 번만 포착됩니다.

물론, "내부" 블록에서 발생한 모든 새로운 예외(catch 블록의 코드도 예외를 발생할 수 있기 때문에)는 "외부" 블록에서 포착됩니다.

이상 내용이 이 글의 전체 내용입니다. 자바스크립트 프로그래밍을 배우시는 모든 분들께 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.