Language/Python

[Python] ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

Dexter_- 2017. 7. 18. 14:23
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
๋ฐ˜์‘ํ˜•