๐ ์ค๋ฅ ์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ฒ
๋ค์์ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์ํ 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 ์ ์ ์ง์ํ๋ค. else ์ ์ ์์ธ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒฝ์ฐ์ ์คํ๋๋ฉฐ ๋ฐ๋์ except์ ๋ฐ๋ก ๋ค์์ ์์นํด์ผ ํ๋ค.
๋ง์ฝ foo.txt๋ผ๋ ํ์ผ์ด ์๋ค๋ฉด execpt์ ์ด ์ํ๋๊ณ foo.txt ํ์ผ์ด ์๋ค๋ฉด else ์ ์ด ์ํ๋ ๊ฒ์ด๋ค.
๐ 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๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์์ธ์ฒ๋ฆฌ๊ธฐ๋ฒ์ ์ด์ฉํ์ฌ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
๋ง์ฝ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด ๋ค์์ฒ๋ผ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ ๊ฒ์ด๋ค.
๋ง์ฝ ์๋ฌ ๋ฐ์์์ ์ ์ค๋ฅ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
[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 |