์์ธ ์ฒ๋ฆฌ
ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ, aprendamos. ์์ธ ์ฒ๋ฆฌ๋ ์์ ์ ์ธ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ํต์ฌ์ ๋๋ค.
์์ธ๋? ๐คโ
์์ธ(Exception)๋ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ฐ์ํ๋ ์ค๋ฅ์ ๋๋ค.
# ์์ธ๊ฐ ๋ฐ์ํ๋ ์ฝ๋
result = 10 / 0 # ZeroDivisionError
ZeroDivisionError: division by zero
๊ธฐ๋ณธ ์์ธ ์ฒ๋ฆฌ: try-exceptโ
๋จ์ ์์ธ ์ฒ๋ฆฌโ
try:
result = 10 / 0
except:
print('์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค')
ํน์ ์์ธ ์ฒ๋ฆฌโ
try:
number = int(input('์ซ์๋ฅผ ์
๋ ฅํ์ธ์: '))
result = 10 / number
except ZeroDivisionError:
print('0์ผ๋ก ๋๋ ์ ์์ต๋๋ค')
except ValueError:
print('์ฌ๋ฐ๋ฅธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์')
์์ธ ๋ฉ์์ง ๋ฐ๊ธฐโ
try:
file = open('์๋ํ์ผ.txt', 'r')
except FileNotFoundError as e:
print(f'ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค: {e}')
try-except-else-finallyโ
์ ์ฒด ๊ตฌ์กฐโ
try:
# ์คํํ ์ฝ๋
result = 10 / 2
except ZeroDivisionError:
# ์์ธ ๋ฐ์ ์ ์คํ
print('0์ผ๋ก ๋๋ ์ ์์ต๋๋ค')
else:
# ์์ธ๊ฐ ์์ ๋๋ง ์คํ
print(f'๊ฒฐ๊ณผ: {result}')
finally:
# ํญ์ ์คํ (์์ธ ๋ฐ์ ์ฌ๋ถ์ ๋ฌด๊ด)
print('๊ณ์ฐ ์๋ฃ')
Ejemplos Prรกcticos: ํ์ผ ์ฒ๋ฆฌโ
def read_file(filename):
file = None
try:
file = open(filename, 'r', encoding='utf-8')
content = file.read()
return content
except FileNotFoundError:
print(f'ํ์ผ์ด ์์ต๋๋ค: {filename}')
return None
except PermissionError:
print(f'Lectura de Archivos ๊ถํ์ด ์์ต๋๋ค: {filename}')
return None
finally:
if file:
file.close()
print('ํ์ผ์ ๋ซ์์ต๋๋ค')
# ์ฌ์ฉ ์์
content = read_file('data.txt')
์ฃผ์ ์์ธ ์ข ๋ฅ ๐โ
์ผ๋ฐ์ ์ธ ์์ธโ
# ZeroDivisionError: 0์ผ๋ก ๋๋๊ธฐ
try:
10 / 0
except ZeroDivisionError:
print('0์ผ๋ก ๋๋ ์ ์์ต๋๋ค')
# ValueError: ์๋ชป๋ ๊ฐ
try:
int('abc')
except ValueError:
print('์ซ์๋ก ๋ณํํ ์ ์์ต๋๋ค')
# TypeError: ์๋ชป๋ ํ์
try:
'๋ฌธ์์ด' + 123
except TypeError:
print('ํ์
์ด ๋ง์ง ์์ต๋๋ค')
# IndexError: ์๋ชป๋ ์ธ๋ฑ์ค
try:
my_list = [1, 2, 3]
print(my_list[10])
except IndexError:
print('์ธ๋ฑ์ค๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค')
# KeyError: ์๋ ํค
try:
my_dict = {'a': 1}
print(my_dict['b'])
except KeyError:
print('ํค๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค')
# AttributeError: ์๋ ์์ฑ
try:
my_str = 'hello'
my_str.append('!')
except AttributeError:
print('ํด๋น ์์ฑ์ด ์์ต๋๋ค')
ํ์ผ ๊ด๋ จ ์์ธโ
# FileNotFoundError: ํ์ผ ์์
try:
open('์๋ํ์ผ.txt', 'r')
except FileNotFoundError:
print('ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค')
# PermissionError: ๊ถํ ์์
try:
open('/root/file.txt', 'r')
except PermissionError:
print('ํ์ผ ์ ๊ทผ ๊ถํ์ด ์์ต๋๋ค')
# IsADirectoryError: ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ผ๋ก ์ด๊ธฐ
try:
open('some_directory', 'r')
except IsADirectoryError:
print('๋๋ ํ ๋ฆฌ์
๋๋ค')