ํ•œ ๊ฑธ์Œ์”ฉ

[python] ์—๋Ÿฌ์™€ ์˜ˆ์™ธ ๋ณธ๋ฌธ

Python

[python] ์—๋Ÿฌ์™€ ์˜ˆ์™ธ

winter17 2023. 2. 11. 18:16

๐ŸŒฑ  ์—๋Ÿฌ Error

  • ๊ตฌ๋ฌธ ์˜ค๋ฅ˜(Syntax Error) : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ „์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜
  • ์˜ˆ์™ธ(Exception), ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ(Runtime Error) : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜ 

 

โ–ถ๏ธ Syntax Error

  • ๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜, ๋“ค์—ฌ์“ฐ๊ธฐ ๋ฌธ์ œ ๋“ฑ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ๋„ ์ „์— ๋ฐœ์ƒํ•จ
  • ํ•ด๊ฒฐํ•˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ
SyntaxError: EOL while scanning string literal
# EOL : End of Line

 

โ–ถ๏ธ Exception / Runtime Error

  • ์‹คํ–‰ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜
NameError: name 'a' is not defined
# 'a'๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฒƒ์ด ์ •์˜๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์˜๋ฏธ
# 'a'๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฒƒ์„ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด ๋จ

 

โ–ถ๏ธ exception handling ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • syntax error๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰์กฐ์ฐจ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ถˆ๊ฐ€๋Šฅ
  • ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
if ์กฐ๊ฑด ์ž…๋ ฅ():
	print('์ถœ๋ ฅํ•˜๊ธฐ')
else:
	print('if๋ฌธ์ด ์ฐธ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ถœ๋ ฅํ•˜๊ธฐ')
  • try ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
# try except ๊ตฌ๋ฌธ
try:
	 ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ
except:
	์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ

# pass : ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฒ˜๋ฆฌ๋Š” ํ•ด์•ผํ•˜๊ณ  ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ผ๋ฉด ํ”„๋กœ๊ทธ๋žจ ๊ฐ•์ œ ์ข…๋ฃŒ๋ฅผ ๋ง‰์ž๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ
try:
	 ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ
except:
	pass

# try except else ๊ตฌ๋ฌธ
try:
	 ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ
except:
	์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ
else: # ๋ฐ˜๋“œ์‹œ except ๊ตฌ๋ฌธ ๋’ค์— ์‚ฌ์šฉํ•ด์•ผ ํ•จ
	์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ
    
# try except else finally ๊ตฌ๋ฌธ
try:
	 ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ
except:
	์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ
else:
	์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ
finally : # ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‚ฌ์šฉ (์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋“  ๋ง๋“  ๋ฌด์กฐ๊ฑด ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ)
	๋ฌด์กฐ๊ฑด ์‹คํ–‰ํ•  ์ฝ”๋“œ

# try except finally ๊ตฌ๋ฌธ
try:
	 ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ
except:
	์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ
finally :
	๋ฌด์กฐ๊ฑด ์‹คํ–‰ํ•  ์ฝ”๋“œ
    
# try finally ๊ตฌ๋ฌธ
try:
	 ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ
finally : 
	๋ฌด์กฐ๊ฑด ์‹คํ–‰ํ•  ์ฝ”๋“œ
  • try ~ finally ๊ตฌ๋ฌธ์—์„œ return ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ finally ๊ตฌ๋ฌธ์€ ๋ฌด์กฐ๊ฑด ์‹คํ–‰
  • ๋ฐ˜๋ณต๋ฌธ์—์„œ break๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•ด๋„ finally ๊ตฌ๋ฌธ์€ ๋ฌด์กฐ๊ฑด ์‹คํ–‰

 

โ–ถ๏ธ Exception --- class ๋ฐฐ์šฐ๊ณ  ๋‹ค์‹œ ๊ธฐ๋ก ์˜ˆ์ •

  • ๋ชจ๋“  ์˜ˆ์™ธ์ฒ˜๋ฆฌ์˜ ๋ถ€๋ชจ
  • raise ๊ตฌ๋ฌธ : ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์—์„œ ๊ฐ•์ œ๋กœ ์˜ˆ์™ธ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ
    • ์™œ? ์ด ๋ถ€๋ถ„์„ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๋ฉด ๋‚˜์ค‘์— ํฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋‹ˆ๊นŒ ์—ฌ๊ธฐ์—์„œ ๊ฐ•์ œ ์ข…๋ฃŒ์‹œํ‚ค๊ธฐ ์œ„ํ•จ

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

[python] class  (0) 2023.02.12
[python] ํŒŒ์ผ ์ž…์ถœ๋ ฅ  (0) 2023.02.11
[python] ๋ชจ๋“ˆ  (0) 2023.02.10
[python] ์ž๋ฃŒ๊ตฌ์กฐ  (0) 2023.02.09
[python] ์ œ์–ด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ํ•จ์ˆ˜  (0) 2023.02.08