JS의 try catch 문과 그 두 가지 기능에 대한 심층 분석!

青灯夜游
풀어 주다: 2021-09-23 10:08:25
앞으로
2547명이 탐색했습니다.

이 글에서는 Javascript의 try catch 문에 대해 소개하고 try catch 문의 두 가지 기능을 소개하겠습니다. 도움이 되셨으면 좋겠습니다.

JS의 try catch 문과 그 두 가지 기능에 대한 심층 분석!

프로그램은 위에서 아래로 순차적으로 실행되며, 동시에 일부 제어문의 영향을 받아 실행 경로가 변경될 수 있으며, 프로그램의 최종 실행 경로는 제어 흐름입니다.

js의 제어문에는 if, for, while, try catch 등이 포함됩니다. 이들은 모두 프로그램의 방향을 변경합니다.

프로그램은 데이터를 기반으로 작동합니다. 프로그램이 실행됨에 따라, 즉 제어 흐름이 진행됨에 따라 변경되는 데이터를 데이터 흐름이라고 합니다.

분명히 데이터 흐름은 제어 흐름에 따라 달라집니다. 프로그램 분석의 데이터 흐름 분석에도 먼저 제어 흐름 분석이 필요합니다.

예를 들어 다음 코드는

const a = 1;
let b;

if (a === 1) {
    b = '1111';
} else {
    b = '2222';
}
로그인 후 복사

a가 1이므로 b = '1111';로 실행됩니다. 이는 프로그램에서 최종적으로 실행되는 코드인 제어 흐름입니다. 프로그램을 실행하고 일부 데드 코드 삭제 등을 수행합니다.

제어 흐름이 실행되면서 b에는 2222라는 값이 할당됩니다. 이는 데이터 흐름, 즉 값을 변경하는 과정으로 특정 문의 변수 값을 분석하는 데 사용할 수 있습니다.

프로그램은 데이터에 따라 다른 처리를 수행합니다. 데이터에 오류가 있으면 처리 프로그램이 이를 처리할 수 없으며 오류가 보고되어 후속 제어 흐름이 중단됩니다. 예를 들어 데이터가 비어 있거나 데이터 형식이 잘못되었습니다. 이때 오류 처리는 Try catch를 통해 이루어져야 하며, 이를 예외 처리라고도 합니다.

우리는 두 가지 목적으로 예외 처리를 수행합니다.

  • 잘못된 논리를 철저히 처리합니다.

예를 들어 매개변수 파싱에 오류가 있는 경우 catch에 기본값을 할당합니다. 이 오류가 처리된 후에는 다시 보고할 필요가 없습니다. 이 경우 try catch도 if else와 동일한 논리의 일부입니다.

  • 보고된 오류에 대해 보다 시나리오 기반의 설명을 제공하세요.

JS 오류는 JS 엔진에서 발생합니다. 예를 들어 null 개체에 대한 메서드를 호출하면 TypeError가 보고되고, 선언되지 않은 변수를 사용하면 ReferenceError가 보고됩니다. 특정 오류는 다양한 시나리오에서 보고되며 다른 의미를 갖습니다.

이 개체가 사용자 입력에서 나온 경우 사용자 입력에 오류가 있는 것입니다. 이 개체를 서버에서 얻은 경우 이는 에서 반환된 데이터를 의미합니다. 서버가 잘못되었습니다. 다양한 시나리오에서는 동일한 오류가 더 구체적인 의미를 가지므로 catch를 시도해야 합니다. 그런 다음 장면 정보와 함께 오류 설명이 포함된 사용자 정의 오류를 발생시킵니다.

많은 라이브러리와 프레임워크가 이를 잘 수행합니다. 보고된 오류에는 특정 시나리오 정보가 있으며 일부는 errorno를 통해 솔루션을 쿼리할 수도 있습니다. 이는 사용자 정의된 오류 처리입니다.

비즈니스 코드에 보고된 많은 오류는 이러한 방식으로 처리되지 않고 기본 오류가 직접 보고됩니다. 우리는 전역적으로 발생하는 일부 오류를 수집하기 위해 예외 모니터링 플랫폼을 사용할 것이며 이러한 오류는 상대적으로 원시적인 정보인 경우가 많습니다. 오류 위치와 스택이 제공되지만 문제를 찾으려면 여전히 소스 코드를 살펴봐야 합니다.

예를 들어 객체가 비어 있다는 오류가 보고되는데 어떤 객체가 비어 있는지, 이유는 무엇인지, 해결 방법은 무엇인지, 숫자가 있는지는 어떻게 알 수 있나요?

다양한 오류를 포착한 다음 특정 시나리오에 대한 일부 사용자 정의 오류를 버릴 수 있다면 훨씬 더 좋을 것입니다. 타사 라이브러리는 이와 관련하여 훌륭한 작업을 수행했지만 비즈니스 코드에서 시나리오 기반 사용자 정의 오류에 주의를 기울이는 사람은 거의 없습니다.

물론 프런트엔드 비즈니스 코드 사용자는 인터페이스를 통해 소프트웨어를 사용하지만 실제로는 다양한 오류에 대해 몇 가지 UI 프롬프트만 제공하면 됩니다. 라이브러리 코드는 개발자를 위한 코드이기 때문에 각종 오류를 시나리오 기반으로 기술하고, 오류에 번호를 매겨 해결책을 제시하는 것이 필요하다.

하지만 비즈니스 코드도 오류를 타사 라이브러리 코드처럼 처리해야 한다고 생각합니다. 의미 없는 기본 오류를 보고하지 말고 특정 의미를 지닌 일부 사용자 정의 오류를 보고하면 문제 해결이 훨씬 쉬워질 것입니다.

그러나 시나리오 기반 사용자 정의 오류는 문제 해결에 더 도움이 될 수 있지만 코드에서 보고할 수 있는 오류에 대한 확신을 기반으로 해야 합니다. 보고하는 오류 메시지가 실제 오류 원인과 다를 경우 문제 해결이 더 어려워지므로 원래 오류를 보고하는 것이 좋습니다.

요약

프로그램 실행 프로세스는 제어문의 영향을 받으며, 데이터의 변경은 데이터 흐름이라고 하며 데이터 흐름은 종종 분석되는 두 가지 측면입니다. 프로그램 분석 .

오류는 제어 흐름을 방해합니다. try catch를 통해 오류에 대한 일부 처리를 수행해야 합니다.

오류 처리에는 두 가지 목적이 있습니다.

하나는 비밀 처리를 수행하는 것입니다. 이는 if else와 동일하며 더 이상 오류를 보고할 필요가 없습니다.

하나는 네이티브 JS 오류에 대한 시나리오 기반 설명을 제공하고 더 구체적인 정보가 포함된 오류 개체를 생성하는 것입니다.

많은 라이브러리가 이 작업을 매우 잘 수행하며 오류 번호와 해결책도 제공합니다. 그러나 실제로 많은 비즈니스 코드는 사용자에게 UI에 대한 피드백만 제공하고 발생한 오류에 대한 시나리오 기반 패키징을 제공하지 않습니다. 이로 인해 오류 모니터링 플랫폼에서 수집한 오류는 상대적으로 원시적인 오류이므로 문제 해결을 위해서는 소스 코드를 확인해야 합니다. 라이브러리 코드와 같은 일부 시나리오 기반 오류 패키징도 수행할 수 있다면 대부분의 Javascript 엔지니어가 수행하지 않은 문제를 계산하고 해결하는 것이 훨씬 쉬울 것입니다.

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !

위 내용은 JS의 try catch 문과 그 두 가지 기능에 대한 심층 분석!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!