hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog

Android DevLog

๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์ •๋ฆฌ

C++ ์ •๋ฆฌ - 43 (abort() ํ˜ธ์ถœ, ์˜ˆ์™ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ์˜ˆ์™ธ๋กœ ๊ฐ์ฒด ์‚ฌ์šฉํ•˜๊ธฐ, c++11์—์„œ์˜ ์˜ˆ์™ธ ๊ทœ๊ฒฉ, ์Šคํƒ ํ’€๊ธฐ, ์˜ˆ์™ธ์˜ ๊ทธ ๋ฐ–์˜ ๊ธฐ๋Šฅ)

2020. 11. 28. 18:30
728x90

์˜ˆ์™ธ

abort() ํ˜ธ์ถœ

ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋ถ€์ •์ด๋ฉด, ๊ทธ ํ•จ์ˆ˜๊ฐ€ abort() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. abort() ํ•จ์ˆ˜์˜ ์›ํ˜•์€ cstdlib(๋˜๋Š” stdlib.h) ํ—ค๋” ํŒŒ์ผ์— ๋“ค์–ด์žˆ๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ abort() ํ•จ์ˆ˜๋Š”, ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ํ‘œ์ค€ ์—๋Ÿฌ ์ŠคํŠธ๋ฆผ (cerr๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ)์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œํ‚ค๋„๋ก ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

 

๋˜ํ•œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ๊ธฐ๋™ ๋œ ๊ฒฝ์šฐ, ๊ทธ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋‚˜ ์šด์˜์ฒด์ œ์— ์ปดํŒŒ์ผ๋Ÿฌ์— ์ข…์†์ ์ธ ์–ด๋–ค ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. ์ด๋•Œ abort()๊ฐ€ ํŒŒ์ผ ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๋Š”์ง€ ์—ฌ๋ถ€๋Š” c++ ์‹œ์Šคํ…œ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค. ์›ํ•œ๋‹ค๋ฉด exit()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ , ํŒŒ์ผ ๋ฒ„ํผ๋งŒ ์ง€์šธ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์™ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜

  1. ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
  2. ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•œ๋‹ค.
  3. try ๋ธ”๋ก์„ ์‚ฌ์šฉํ•œ๋‹ค.

throw ํ‚ค์›Œ๋“œ๋Š” ์˜ˆ์™ธ์˜ ๋ฐœ์ƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

throw ํ‚ค์›Œ๋“œ์˜ ๋’ค์—๋Š” ๊ทธ ์˜ˆ์™ธ์˜ ํŠน์ง•์„ ๋‚˜ํƒ€๋‚ด๋Š”, ๋ฌธ์ž์—ด์ด๋‚˜ ๊ฐ์ฒด์™€ ๊ฐ™์€ ํ•˜๋‚˜์˜ ๊ฐ’์ด ๋’ค๋”ฐ๋ฅธ๋‹ค.

 

catch ํ‚ค์›Œ๋“œ๋Š” ์˜ˆ์™ธ์˜ ํฌ์ฐฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๋’ค์—๋Š” ์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‘๋‹ตํ•˜๊ฒŒ ๋งŒ๋“ , ๊ทธ ์˜ˆ์™ธ์˜ ๋ฐ์ดํ„ฐํ˜• ์„ ์–ธ์ด ์†Œ๊ด„ํ˜ธ์— ๋‚˜ํƒ€๋‚œ๋‹ค. (throw ํ‚ค์›Œ๋“œ์˜ ๋’ค์— ๋‚˜์˜ค๋Š” ๋ฌธ์ž์—ด์ด๋‚˜ ๊ฐ์ฒด์™€ ๊ฐ™์€ ํ•˜๋‚˜์˜ ๊ฐ’์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐํ˜• ์„ ์–ธ) ๋˜ ๊ทธ ๋’ค์—๋Š” ์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ทจํ•  ์กฐ์น˜๋“ค์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ฝ”๋“œ ๋ธ”๋ก์ด ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์—ฌ ๋‚˜ํƒ€๋‚œ๋‹ค. ์˜ˆ์™ธ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” catch ํ‚ค์›Œ๋“œ๋Š”, ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์„ ๋•Œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด ์ ํ”„ํ•˜๋Š” ์ง€์ ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ ˆ์ด๋ธ”์˜ ์—ญํ• ์„ ํ•œ๋‹ค.

 

try ๋ธ”๋ก์€ ํŠน๋ณ„ํ•œ ์˜ˆ์™ธ๋“ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๋ธ”๋ก์ด๋‹ค. ๊ทธ ๋’ค์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ catch ๋ธ”๋ก๋“ค์ด ๋‚˜์˜จ๋‹ค. try ๋ธ”๋ก ์ž์ฒด๋Š” ํ‚ค์›Œ๋“œ try์— ์˜ํ•ด ๋‚˜ํƒ€๋‚œ๋‹ค. ๊ทธ ๋’ค์—๋Š” ์˜ˆ์™ธ๋“ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ๋ธ”๋ก์ด ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์—ฌ ๋‚˜ํƒ€๋‚œ๋‹ค.

 

์˜ˆ์™ธ๋กœ ๊ฐ์ฒด ์‚ฌ์šฉํ•˜๊ธฐ

์ผ๋ฐ˜์ ์œผ๋กœ, ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ•จ์ˆ˜๋“ค์€ ๊ฐ์ฒด๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์˜ˆ์™ธ ๋ฐ์ดํ„ฐํ˜•์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์„œ๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค๊ณผ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ƒํ™ฉ์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๊ฐ์ฒด ์ž์ฒด์— ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์—ฌ๋Ÿฌ ์กฐ๊ฑด๋“ค์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. catch ๋ธ”๋ก์€ ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ์•ก์…˜ ์ฝ”์Šค๋ฅผ ์ทจํ•ด์•ผ ํ• ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

c++11์—์„œ์˜ ์˜ˆ์™ธ ๊ทœ๊ฒฉ

double harm(double a) throw(bad_thing);

//bad_thing exception์„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

double marm(double a) throw();

//exception์„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

throw() ๋ถ€๋ถ„์€ ํƒ€์ž… ๋ฆฌ์ŠคํŠธ์˜ ์กด์žฌ ์œ ๋ฌด์™€ ์ƒ๊ด€์—†์ด ์˜ˆ์™ธ ์‚ฌํ•ญ์ด๋ฉฐ, ํ•จ์ˆ˜ ์›ํ˜•๊ณผ ํ•จ์ˆ˜ ์ •์˜์—์„œ ๋ชจ๋‘ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๋งŒ๋“  ์ฒซ ๋ฒˆ์งธ ์ด์œ ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ try ๋ธ”๋ก์˜ ํ•„์š”์„ฑ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋‘ ๋ฒˆ์งธ ์ด์œ ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ํ•˜์—ฌ๊ธˆ ๋Ÿฐํƒ€์ž„ ์ฒดํฌ์šฉ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์˜ˆ์™ธ์‚ฌํ•ญ์ด ์œ„๋ฐ˜๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. c++์€ noexcept๋ผ๋Š” ์ƒˆ๋กœ์šด ํ‚ค์›Œ๋“œ๋กœ์„œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋ฅผ ์ง€์นญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

 

double marm() noexcept; //marm() ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

์Šคํƒ ํ’€๊ธฐ

์–ด๋–ค try ๋ธ”๋ก์ด, ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ , ๊ทธ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ทธ๋ž˜๋„ ์—ฌ์ „ํžˆ ์˜ˆ์™ธ๋Š”, ๊ทธ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ try๋ธ”๋ก๊ณผ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํ•จ์ˆ˜๋กœ ์ ํ”„ํ•œ๋‹ค.

 

์ด ๊ณผ์ •์—์„œ๋Š” ์Šคํƒ ํ’€๊ธฐ๋ผ๋Š” ๊ฒƒ์ด ๊ด€์—ฌํ•œ๋‹ค. ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ด ํ˜ธ์ถœ์„ ํ†ตํ•˜์ง€ ์•Š๊ณ  ๋ฐœ์ƒ๋œ ์˜ˆ์™ธ๋ฅผ ํ†ตํ•ด ์ข…๋ฃŒ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ด ๊ฒฝ์šฐ์—๋„ ํ”„๋กœ๊ทธ๋žจ์€ ์Šคํƒ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์Šคํƒ์—์„œ ๋งŒ๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฆฌํ„ด ์ฃผ์†Œ์—์„œ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ , try ๋ธ”๋ก์— ๋“ค์–ด์žˆ๋Š” ๋ฆฌํ„ด ์ฃผ์†Œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ์Šคํƒ์„ ํ•ด์ œํ•œ๋‹ค. ์ด๋•Œ ์ œ์–ด๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋’ค์— ์˜ค๋Š” ์ฒซ ๋ฒˆ์งธ ๊ตฌ๋ฌธ์ด ์•„๋‹ˆ๋ผ try ๋ธ”๋ก์˜ ๋์— ์ด์–ด์ง€๋Š” ์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ์ด ๊ณผ์ •์„ ์Šคํƒ ํ’€๊ธฐ๋ผ ๋ถ€๋ฅธ๋‹ค.

์˜ˆ์™ธ ๋ฐœ์ƒ ๋ฉ”์ปค๋‹ˆ์ฆ˜์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํŠน์ง•์€, ํ•จ์ˆ˜ ๋ฆฌํ„ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์Šคํƒ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ๋ชจ๋“  ์ž๋™ ํด๋ž˜์Šค ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•ด์„œ ํด๋ž˜์Šค ํŒŒ๊ดด์ž๋“ค์ด ํ˜ธ์ถœ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์˜ˆ์™ธ์˜ ๊ทธ ๋ฐ–์˜ ๊ธฐ๋Šฅ

throw-catch ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ „๋‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๋งŽ์ด ๋น„์Šทํ•˜์ง€๋งŒ ์•ฝ๊ฐ„ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ํ•จ์ˆ˜ fun()์— ์žˆ๋Š” return ๊ตฌ๋ฌธ์€ fun()์„ ํ˜ธ์ถœํ•œ ํ•จ์ˆ˜์— ์‹คํ–‰์„ ์˜ฎ๊ธด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ throw๋Š” ๊ทธ ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•œ try-catch ์กฐํ•ฉ์ด ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ํ•จ์ˆ˜์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์‹คํ–‰์„ ๊ณ„์† ์˜ฎ๊ธด๋‹ค.

 

๋˜ ํ•œ ๊ฐ€์ง€ ์ฐจ์ด๋Š”, ์˜ˆ์™ธ ์ง€์ •์ž๋‚˜ catch ๋ธ”๋ก์ด ์ฐธ์กฐ๋ฅผ ์ง€์ •ํ• ์ง€๋ผ๋„ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์–ธ์ œ๋‚˜ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ž„์‹œ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ ๋‹ค. ์ฆ‰, catch ๋ธ”๋ก์€ ์ž„์‹œ ๋ณต์‚ฌ๋ณธ์˜ ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•จ. ์ž„์‹œ ๋ณต์‚ฌ๋ณธ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๊ธฐ์ดˆ ํด๋ž˜์Šค ์ฐธ์กฐ๋Š” ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด๋„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์˜ˆ์™ธ๋“ค์˜ ํด๋ž˜์Šค ๊ณ„์ธต์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํ˜•๋“ค์„ ๋”ฐ๋กœ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด, ๊ธฐ์ดˆ ํด๋ž˜์Šค ์ฐธ์กฐ๋Š” ํŒจ๋ฐ€๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ์ฒด๋“ค์„ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด๋Š” ๊ทธ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋“ค๋งŒ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค. catch ๋ธ”๋ก๋“ค์„ ํŒŒ์ƒ ์ˆœ์„œ์˜ ์—ญ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

 

class bad_1 {...};
class bad_2 : public bad_1 {...};
class bad_3 : public bad_2 {...};
...
//๊ธฐ์ดˆ ํด๋ž˜์Šค ๊ฐ์ฒด์™€ ํŒŒ์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ๋งค์น˜ ์‹œํ‚จ๋‹ค.
void duper() throw(bad_1)
{
	...
    if(oh_no)
    	throw bad_1();
    if(rats)
    	throw bad_2();
    if(drat)
    	throw bad_3();
}
...
try{
	duper();
}
catch(bad_3 &be)
{...}
catch(bad_2 &be)
{...}
catch(bad_1 &be)
{...}

 

์–ด๋–ค ์˜ˆ์™ธ๋ผ๋„ ํฌ์ฐฉํ•˜๋Š” ๋น„๊ฒฐ์€ ์˜ˆ์™ธ ๋ฐ์ดํ„ฐํ˜•์— ๋Œ€ํ•ด ์ƒ๋žต ๋ถ€ํ˜ธ(...)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

catch(...){//๊ตฌ๋ฌธ๋“ค} //์–ด๋–ค ์˜ˆ์™ธ ๋ฐ์ดํ„ฐํ˜•๋„ ํฌ์ฐฉํ•œ๋‹ค.

๋ฐœ์ƒ๋˜๋Š” ์˜ˆ์™ธ๋“ค์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด, ์ด์™€ ๊ฐ™์€ ํฌ๊ด„ ํ˜•์‹์„ catch ๋ธ”๋ก ์‹œํ€€์Šค์˜ ๋์— ๋†“์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ switch์˜ default ์ผ€์ด์Šค์™€ ์•ฝ๊ฐ„ ๋น„์Šทํ•˜๋‹ค.

 

 

 

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์ •๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • C++ ์ •๋ฆฌ - 45 (RTTI, dynamic_cast ์—ฐ์‚ฐ์ž, typeid ์—ฐ์‚ฐ์ž์™€ type_info ํด๋ž˜์Šค, ๋ฐ์ดํ„ฐํ˜• ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž, string ํด๋ž˜์Šค)
    • C++ ์ •๋ฆฌ - 44 (exception ํด๋ž˜์Šค, stdexcept ์˜ˆ์™ธ ํด๋ž˜์Šค, bad_alloc ์˜ˆ์™ธ์™€ new, ์˜ˆ์™ธ, ํด๋ž˜์Šค, ์ƒ์†, ์ž˜๋ชป๋œ ์˜ˆ์™ธ)
    • C++ ์ •๋ฆฌ - 42 (ํ”„๋ Œ๋“œ ํด๋ž˜์Šค, ํ”„๋ Œ๋“œ ๋ฉค๋ฒ„ ํ•จ์ˆ˜, ๋‚ดํฌ ํด๋ž˜์Šค)
    • C++ ์ •๋ฆฌ - 41 (ํ…œํ”Œ๋ฆฟ ๊ตฌ์ฒดํ™”, ๋ฉค๋ฒ„ ํ…œํ”Œ๋ฆฟ, ๋งค๊ฐœ๋ณ€์ˆ˜ ํ…œํ”Œ๋ฆฟ, ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค์™€ ํ”„๋ Œ๋“œ ํ•จ์ˆ˜, ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ฐ”์šด๋“œ ํ…œํ”Œ๋ฆฟ ํ”„๋ Œ๋“œ ํ•จ์ˆ˜, ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์–ธ๋ฐ”์šด๋“œ ํ…œํ”Œ๋ฆฟ ํ”„๋ Œ๋“œ ..
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”