⊗jsSpExcPrb 150 of 294 menu

JavaScript에서 예외 전파하기

제품 JSON 작업의 catch 블록을 살펴보겠습니다:

catch (error) { if (error.name == 'SyntaxError') { alert('잘못된 제품 JSON'); } else if (error.name == 'ProductCostError') { alert('제품에 가격 또는 수량 정보가 없습니다'); } }

보시다시피, 우리는 계획한 두 가지 예외를 잡아서 그에 맞게 대응합니다. 그러나 우리가 예상하지 못한 다른 유형의 예외가 발생하면 어떻게 될까요? 이 경우에도 예외는 catch 블록으로 들어가지만, 다른 유형의 예외는 우리의 if 문 중 어느 곳에도 해당되지 않기 때문에 아무런 반응이 일어나지 않습니다.

아무런 반응이 없다는 것은, 실제로 아무것도: 콘솔에 오류 메시지조차 출력되지 않는다는 의미입니다. 우리 코드는 그저 조용히 작동하지 않을 뿐입니다.

따라서 다음 규칙이 존재합니다: 당신의 코드는 어떻게 처리해야 할지 아는 예외만 잡아야 합니다. 예외가 알려지지 않은 것이라면, throw를 사용하여 그것을 전파 해야 합니다. 이 경우 더 잘 알고 있는 상위 코드가 그것을 잡거나, 예외가 콘솔에 오류로 출력될 것입니다.

우리 코드를 수정해 봅시다:

catch (error) { if (error.name == 'SyntaxError') { alert('잘못된 제품 JSON'); } else if (error.name == 'ProductCostError') { alert('제품에 가격 또는 수량 정보가 없습니다'); } else { throw error; // 예외를 더 멀리 전파 } }

다음 코드가 주어졌습니다:

try { let arr = JSON.parse(json); for (let i = 0; i < arr.length; i++) { localStorage.setItem(i, arr[i]); } } catch (error) { if (error.name == 'QuotaExceededError') { alert('저장소 공간이 부족합니다'); } if (error.name == 'SyntaxError') { alert('잘못된 JSON 형식입니다'); } }

이 코드의 문제점은 무엇일까요? 더 나은 방식으로 수정해 보세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부