Language/Python [Python] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
  • 728x90
    ๋ฐ˜์‘ํ˜•

     

     

     

    ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

    ๐Ÿ“Œ ์˜ค๋ฅ˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•

     

    ๋‹ค์Œ์€ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ rty, except๋ฌธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋‹ค.

    try:
        ...
    except [๋ฐœ์ƒ ์˜ค๋ฅ˜ [as ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋ณ€์ˆ˜]]:
        ...

     

    try ๋ธ”๋ก ์ˆ˜ํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด except ๋ธ”๋ก์ด ์ˆ˜ํ–‰๋œ๋‹ค. ํ•˜์ง€๋งŒ try ๋ธ”๋ก์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด except ๋ธ”๋ก์€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

    ์œ„ ๊ตฌ๋ฌธ์„ ๋ณด๋ฉด [] ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด ๊ธฐํ˜ธ๋Š” ๊ด„ํ˜ธ ์•ˆ์˜ ๋‚ด์šฉ์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ด€๋ก€์ ์ธ ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค.

     

    ๐Ÿ”” ์˜ˆ) try, except ๋งŒ ์“ฐ๋Š” ๋ฐฉ๋ฒ•

    try:
        ...
    except:
        ...

     

    ์ด ๊ฒฝ์šฐ๋Š” ์˜ค๋ฅ˜ ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด except ๋ธ”๋ก์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

     

    ๐Ÿ”” ์˜ˆ) ๋ฐœ์ƒ ์˜ค๋ฅ˜๋งŒ ํฌํ•จํ•œ except๋ฌธ

    try:
        ...
    except ๋ฐœ์ƒ ์˜ค๋ฅ˜:
        ...

    ์ด ๊ฒฝ์šฐ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ except๋ฌธ์— ๋ฏธ๋ฆฌ ์ •ํ•ด ๋†“์€ ์˜ค๋ฅ˜ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•  ๋•Œ๋งŒ except ๋ธ”๋ก์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

     

    ๐Ÿ”” ์˜ˆ) ๋ฐœ์ƒ ์˜ค๋ฅ˜์™€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋ณ€์ˆ˜๊นŒ์ง€ ํฌํ•จํ•œ except๋ฌธ

    try:
        ...
    except ๋ฐœ์ƒ ์˜ค๋ฅ˜ as ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋ณ€์ˆ˜:
        ...

     

    ์ด ๊ฒฝ์šฐ๋Š” ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ๊นŒ์ง€ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

     

     

     

     

    try ...else

    ๐Ÿ“Œ try๋ฌธ์€ else ์ ˆ์„ ์ง€์›ํ•œ๋‹ค. else ์ ˆ์€ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์‹คํ–‰๋˜๋ฉฐ ๋ฐ˜๋“œ์‹œ except์ ˆ ๋ฐ”๋กœ ๋‹ค์Œ์— ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค.

     

    ๋งŒ์•ฝ foo.txt๋ผ๋Š” ํŒŒ์ผ์ด ์—†๋‹ค๋ฉด execpt์ ˆ์ด ์ˆ˜ํ–‰๋˜๊ณ  foo.txt ํŒŒ์ผ์ด ์žˆ๋‹ค๋ฉด else ์ ˆ์ด ์ˆ˜ํ–‰๋  ๊ฒƒ์ด๋‹ค.

     

     

    try ...finally

    ๐Ÿ“Œ try ๋ฌธ์—๋Š” finally ์ ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. finally์ ˆ์€ try๋ฌธ ์ˆ˜ํ–‰ ๋„์ค‘ ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์ˆ˜ํ–‰๋œ๋‹ค. ๋ณดํ†ต finally์ ˆ์€ ์‚ฌ์šฉํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ closeํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

     

     

     

    ์—ฌ๋Ÿฌ๊ฐœ์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌํ•˜๊ธฐ

    ๐Ÿ“Œ try๋ฌธ ๋‚ด์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์ด์šฉํ•œ๋‹ค.

    try:
        ...
    except ๋ฐœ์ƒ ์˜ค๋ฅ˜1:
        ...
    except ๋ฐœ์ƒ ์˜ค๋ฅ˜2:
        ...

     

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ์˜ค๋ฅ˜์™€ ์ธ๋ฑ์‹ฑ ์˜ค๋ฅ˜๋ฅผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    IndexError์ด ๋จผ์ € ๋ฐœ์ƒ ํ•จ์œผ๋กœ ZeroDivisionError๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

     

    ์‹คํ–‰ํ•˜๋ฉด "list index out of range"๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

     

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ZerroDivisionError ์™€ IndexError๋ฅผ ํ•จ๊ป˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

     

    2๊ฐœ ์ด์ƒ์˜ ์˜ค๋ฅ˜๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์™€ ๊ฐ™์ด ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•จ๊ป˜ ๋ฌถ์–ด์ฃผ์–ด ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

     

     

     

    ์˜ค๋ฅ˜ ํšŒํ”ผํ•˜๊ธฐ

    ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๊ทธ๋ƒฅ ํ†ต๊ณผ์‹œ์ผœ์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

     

     

     

     

    ์˜ค๋ฅ˜ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ

    ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ข…์ข… ์˜ค๋ฅ˜๋ฅผ ์ผ๋ถ€๋Ÿฌ ๋ฐœ์ƒ์‹œ์ผœ์•ผ ํ•  ๊ฒฝ์šฐ๋„ ์ƒ๊ธด๋‹ค. ํŒŒ์ด์ฌ์€ raise๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์˜ค๋ฅ˜๋ฅผ ๊ฐ•์ œ๋กœ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

     

    ์˜ˆ๋ฅผ ๋“ค์–ด Bird๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ fly ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

    ์œ„ ์˜ˆ์ œ๋Š” Bird ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ fly๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๊ฒŒ๋” ํ•œ๋‹ค.

    ๐Ÿ’ก NotlmplementedError ๋Š” ํŒŒ์ด์ฌ ๋‚ด์žฅ ์˜ค๋ฅ˜๋กœ, ๊ผญ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ์ผ๋ถ€๋Ÿฌ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ ์ž ์‚ฌ์šฉํ•œ๋‹ค.

     

     

    Eagle ํด๋ž˜์Šค๋Š” Bird ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Eagle ํด๋ž˜์Šค์—์„œ fly ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— Bird ํด๋ž˜์Šค์˜ fly ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  raise๋ฌธ์— ์˜ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ NotlmplementedError๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

    ๐Ÿ’ก ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค์—์„œ ํ•จ์ˆ˜๋ฅผ ์žฌ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

     

     

     

     

    ์˜ค๋ฅ˜ ๋งŒ๋“ค๊ธฐ

    ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ๋„์ค‘ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ข…์ข… ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

    ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒŒ์ด์ฌ ๋‚ด์žฅ ํด๋ž˜์Šค์ธ Exception ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

     

    ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑ ํ›„ ์‹คํ–‰ํ•ด ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด "์ฒœ์‚ฌ"๊ฐ€ ์ถœ๋ ฅ๋œ ํ›„ MyError๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

     

    ์ด๋ฒˆ์—๋Š” MyError๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ธฐ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.

     

     

    ๋งŒ์•ฝ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

     

    ๋งŒ์•ฝ ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ์ ์— ์˜ค๋ฅ˜๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•œ๋‹ค.

     

     

     

     

     

     

     

    728x90
    ๋ฐ˜์‘ํ˜•

    'Language > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [Python] ์™ธ์žฅํ•จ์ˆ˜  (0) 2017.07.21
    [Python] ๋‚ด์žฅ ํ•จ์ˆ˜  (0) 2017.07.19
    Python ํŒจํ‚ค์ง€  (0) 2017.07.18
    [Python] ๋ชจ๋“ˆ  (0) 2017.07.17
    Python ํด๋ž˜์Šค/ํด๋ž˜์Šค ๋ณ€์ˆ˜  (0) 2017.07.17
์ƒ๋‹จ์œผ๋กœ