--- id: wiki-2026-0508-error-boundaries title: Error Boundaries category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) Error Boundaries๋Š” React ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ํ•˜์œ„์—์„œ ๋ฐœ์ƒํ•˜๋Š” JavaScript ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ํฌ์ฐฉํ•˜์—ฌ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํฌ๋ž˜์‹œ(White Screen)๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ์„ ์–ธ์  ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ง€์ ์„ ๊ฒฉ๋ฆฌํ•˜๊ณ  ๋Œ€์ฒด UI(Fallback UI)๋ฅผ ๋ Œ๋”๋งํ•จ์œผ๋กœ์จ ์‹œ์Šคํ…œ์˜ ๊ฐ€์šฉ์„ฑ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋ณดํ˜ธํ•œ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) 1. **์ž‘๋™ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ์˜์กด์„ฑ** - React 16๋ถ€ํ„ฐ ๋„์ž…๋˜์—ˆ์œผ๋ฉฐ, ์ž์‹ ์ปดํฌ๋„ŒํŠธ์˜ ๋ Œ๋”๋ง, ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž ๋‚ด๋ถ€์˜ ์—๋Ÿฌ๋ฅผ ๊ฐ์ง€ํ•œ๋‹ค. - ๋ฐ˜๋“œ์‹œ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฉฐ, `static getDerivedStateFromError()`๋กœ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  `componentDidCatch()`๋กœ ์—๋Ÿฌ๋ฅผ ๋กœ๊น…ํ•œ๋‹ค. 2. **์„ ์–ธ์  ์—๋Ÿฌ ๊ฒฉ๋ฆฌ (Isolation)** - ๋ช…๋ นํ˜• `try/catch`์™€ ๋‹ฌ๋ฆฌ React์˜ ์„ ์–ธ์  ํŠน์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ์ˆ˜์ค€์—์„œ ์—๋Ÿฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๊ฐ€ ์•„๋‹Œ, ์‹คํŒจ ์œ„ํ—˜์ด ๋†’์€ ํŠน์ • ์œ„์ ฏ(์ฐจํŠธ, ์„œ๋“œํŒŒํ‹ฐ ํผ ๋“ฑ)์„ ๋…๋ฆฝ๋œ Boundary๋กœ ๊ฐ์‹ธ '์žฅ์•  ๊ฒฉ๋ฆฌ'๋ฅผ ์‹คํ˜„ํ•œ๋‹ค. 3. **ํฌ์ฐฉ ๋ถˆ๊ฐ€๋Šฅํ•œ ์˜์—ญ (Limitations)** - ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ, ๋น„๋™๊ธฐ ์ฝ”๋“œ(setTimeout, Fetch), ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR), Error Boundary ์ž์ฒด ๋‚ด์˜ ์—๋Ÿฌ๋Š” ํฌ์ฐฉํ•˜์ง€ ๋ชปํ•œ๋‹ค. - ์ด๋Ÿฌํ•œ ์˜์—ญ์€ ์—ฌ์ „ํžˆ `try/catch`๋‚˜ ์ „์—ญ ์—๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ†ตํ•œ ๋ณด์™„์ด ํ•„์š”ํ•˜๋‹ค. 4. **๋ฏธ์ฒ˜๋ฆฌ ์—๋Ÿฌ์˜ ๊ฒฐ๊ณผ** - ํฌ์ฐฉ๋˜์ง€ ์•Š์€ ์—๋Ÿฌ๋Š” ์ „์ฒด ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ์˜ ๋งˆ์šดํŠธ ํ•ด์ œ(Unmounting)๋ฅผ ์œ ๋ฐœํ•˜๋ฉฐ, ์ด๋Š” ์†์ƒ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ๋ณด๋‹ค ์•ˆ์ „ํ•œ ์„ ํƒ์œผ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ์œ ์ง€ ํ•„์š”์„ฑ**: ์ตœ์‹  React๊ฐ€ Hooks ์ค‘์‹ฌ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Error Boundary ๊ตฌํ˜„์„ ์œ„ํ•ด ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜์  ์ผ๊ด€์„ฑ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. - **์„ฑ๋Šฅ ๋ฐ ๋ Œ๋”๋ง ์˜ค๋ฒ„ํ—ค๋“œ**: ๋„ˆ๋ฌด ๋งŽ์€ Error Boundary๋ฅผ ์ค‘์ฒฉํ•  ๊ฒฝ์šฐ ํŠธ๋ฆฌ ๊นŠ์ด๊ฐ€ ๊นŠ์–ด์ง€๊ณ  ์—๋Ÿฌ ์ „ํŒŒ ์ฒดํฌ ๋กœ์ง์— ๋”ฐ๋ฅธ ๋ฏธ์„ธํ•œ ์„ฑ๋Šฅ ์˜ํ–ฅ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. - **๋น„๋™๊ธฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ์˜ ๊ณต๋ฐฑ**: ๋ Œ๋”๋ง ์—๋Ÿฌ๋งŒ ํฌ์ฐฉํ•˜๋ฏ€๋กœ, ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์ด ๋นˆ๋ฒˆํ•œ ํ˜„๋Œ€ ์•ฑ์—์„œ๋Š” `react-error-boundary`์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•œ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) ### Related Concepts (Auto-Linked) * [[Frontend]] * [[JavaScript]] * [[Observability]] * [[React]] * [[Research]] ### Related Concepts - **Fallback UI**: ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜๋Š” ๋ฐฉ์–ด์  ์ธํ„ฐํŽ˜์ด์Šค (๊ด€๊ณ„: ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฌผ) - **Component Stack Traces**: ์—๋Ÿฌ ๋ฐœ์ƒ ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์ •๋ณด (๊ด€๊ณ„: ๋””๋ฒ„๊น… ํ•ต์‹ฌ ๋ฐ์ดํ„ฐ) - **Sentry / LogRocket**: ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ์—๋Ÿฌ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„ ํ”Œ๋žซํผ (๊ด€๊ณ„: ์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์—ฐ๋™) ### Deeper Research Questions 1. React์˜ ๋‚ด๋ถ€ Fiber ์•„ํ‚คํ…์ฒ˜๋Š” Error Boundary๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ๋ Œ๋”๋ง ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ์ปค๋ฐ‹ ๋‹จ๊ณ„๋กœ ์ „์ดํ•˜๋Š”๊ฐ€? 2. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋‚ด์˜ ์—๋Ÿฌ๋ฅผ Error Boundary๋กœ ๊ฐ•์ œ ์ „ํŒŒํ•˜๊ธฐ ์œ„ํ•œ 'setState' ํŠธ๋ฆญ์˜ ์›๋ฆฌ์™€ ํ•œ๊ณ„๋Š”? 3. `react-error-boundary` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ํ™˜๊ฒฝ์—์„œ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๋Š” ๋ฐฉ์‹์€? 4. ๋‹จ์ผ ์ „์—ญ Error Boundary์™€ ๋‹ค์ค‘ ์ง€์—ญ Error Boundary ๊ฐ„์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๋ฆฌ๋ Œ๋”๋ง ๋ฒ”์œ„ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋Š”? 5. ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR) ํ™˜๊ฒฝ์—์„œ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ Error Boundary๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ธฐ ์ „์˜ ์—๋Ÿฌ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ### Practical Application Contexts - **๊ฒฐ์ œ ๋ฐ ๊ธˆ์œต ๋ชจ๋“ˆ**: ์ž…๋ ฅ ํผ์˜ ์ž‘์€ ๋ Œ๋”๋ง ์˜ค๋ฅ˜๊ฐ€ ์ „์ฒด ๊ฒฐ์ œ ํ”„๋กœ์„ธ์Šค ๋งˆ๋น„๋กœ ์ด์–ด์ง€์ง€ ์•Š๋„๋ก ๊ฒฉ๋ฆฌ. - **์„œ๋“œํŒŒํ‹ฐ ์œ„์ ฏ ํ†ตํ•ฉ**: ์•ˆ์ •์„ฑ์ด ๊ฒ€์ฆ๋˜์ง€ ์•Š์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ Boundary๋กœ ๋ณดํ˜ธ. ### Adjacent Topics - **Try/Catch Statement in JS** - **Observability in Frontend** - **Graceful Degradation Design** ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*