<jupyter_start><jupyter_text>예외처리- 예외처리는 코드에 에러가 발생하는 경우를 대비해서 예외처리를 설정해주면 에러가 발생해도 아래 코드가 수행됩니다.- try, except, finally - try : 코드 구문- except : 에러가 발생했을 때 실행되는 코드 구문- finally : try, except 구문이 실행되고 마지막에 항상 실행되는 코드 구문<jupyter_code>ls = [1,2,3]
print(ls[3])
print("Done")

# 에러가 났을 때 try except 구문을 적어주면 된다.
ls = [1,2,3]
try:
    print(ls[3])
except:
    print("error")
print("Done")


# 에러 발생시에도 전체는 실행이 되고 에러 발생시 except를 통해서 어떻게 할지 적는다.
# except 특정 에러 검출

ls = [1,2,3]
try:
    print(ls[3])
except IndexError as e:
    print(e)
print("Done")

# indexerror 만 적어서 zerodivision 에러는 검출이 되지 않는다.


ls = [1,2,3]
try:
    print(ls[3])
except IndexError as e:
    print(e)
except ZeroDivisionError as e:
    print("zero")
    print(e)

print("Done")
# 두개 한꺼번에

ls = [1,2,3]
try:
    print(ls[3])
    
except (IndexError, ZeroDivisionError) as e:
    print(e)

print("Done")


# 모든 에러 도출

#except Exception as e:
#    print(e)
is_error = False
ls = [1,2,3] 
try:
    print(ls[3])
except:
    is_error = True

finally:
    print("is error :", is_error)

# try exception 상관 없이 에러 있든 없든 마지막에 출력되는 것이 finally
# finally<jupyter_output>is error : True<jupyter_text>에러 만들기- `raise` : 에러를 강제로 발생시키는 키워드<jupyter_code># 10 이상의 숫자를 입력받았을때 에러를 발생시키는 에러를 만들겠다.

# indexError처럼 우리가 에러의 이름을 작성 할 수 있다.
# exception을 상속받고 문자열을 오버롸이트 해준다.

class Upper10Error(Exception):
    def __str__(self):
        return "insert under 10 number"
def input_number(num):
    if num > 10:
        raise Upper10Error()
    print(num)

# raise 에러명 : 통해서 에러를 customize 할 수 있다.
print(input_number(15))
input_number(5)<jupyter_output>5
{'fraction_non_alphanumeric': 0.12090680100755667, 'fraction_numerical': 0.02392947103274559, 'mean_word_length': 3.450980392156863, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '229628', 'license': 'MIT', 'n_tokens_mistral': 898, 'n_tokens_neox': 1109, 'n_words': 207, 'path': 'python/01_python_basic/07_try_except.ipynb', 'repo_name': 'hyelansgithub/fastcampus-programming', 'size': '1588'}