➜ 문자열 | 슬라이싱, 문자열처리함수, 문자열포맷, 탈출문자
➜ 자료구조 | 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary),
집합(Set), 자료구조 변환
➜ 반복문 | 조건문(if, elif, else), 반복문(for, while), 리스트
컴프리헨션(List Comprehension)
➜ 함수 | def, 전역변수&지역변수, 기본값&키워드인자, 가변인자
➜ 파일입출력, 출력조절, 파일 불러오기 및 읽기, 피클(pickle)
➜ 클래스(Class), __init__, 멤버변수, 메소드
➜ 상속(Inheritance), 다중상속(Multiple Inheritance)
➜ 메소드 오버라이딩, pass, super
➜ 예외 처리, 에러 발생시키기, 사용자 정의 에러, finally
➜ 내장함수, 메서드 총정리(문자열, 리스트, 딕셔너리)
예외 처리(Exception Handling)
- 파이썬에서 예외 처리는 try와 except를 사용하여 구현한다.
- try 블록 안에는 에러가 발생할 가능성이 있는 코드를 배치하고
- except 블록에서는 해당 에러를 처리하는 방법을 명시한다.
try:
# 에러가 발생할 가능성이 있는 코드
except 예외 종류:
# 에러 처리 방법
예외 처리 예시
try:
print("나누기 전용 계산기입니다.")
nums = []
nums.append(int(input("첫 번째 숫자를 입력하세요 : ")))
nums.append(int(input("두 번째 숫자를 입력하세요 : ")))
print("{0} / {1} = {2}".format(nums[0], nums[1], nums[0] / nums[1]))
except ValueError:
print("에러! 잘못된 값을 입력하셨습니다.")
except ZeroDivisionError as err:
print(err)
except Exception as err:
print("알 수 없는 에러가 발생하였습니다.")
print(err)
위 코드에서 에러가 발생할 가능성이 있는 부분을 try 블록 안에 넣고
발생할 수 있는 에러 종류별로 except 블록을 통해 처리한다.
에러 발생시키기(Rasing Errors)
- 가끔은 프로그램에서 예외를 강제로 발생시켜야 할 때가 있다.
- 이때 raise를 사용하여 원하는 예외를 발생시킬 수 있다.
if num1 >= 10 or num2 >= 10:
raise ValueError #예외를 강제로 발생
위 코드에서 두 변수 중 하나가 10 이상일 경우, ValueError 예외를 강제로 발생시킨다.
사용자 정의 에러(Custom Errors)
- 기본적인 에러 종류 외에도 사용자가 직접 에러 클래스를 정의하여 사용할 수 있다.
- 사용자 정의 에러는 Exception 클래스를 상속받아 구현된다.
class BigNumberError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
위 코드에서 BigNumberError라는 사용자 정의 에러를 만든다.
이 에러는 입력된 숫자가 큰 경우에 발생시킬 예정이다.
if num1 >= 10 or num2 >= 10:
raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
if 문 안에서 발생할 조건을 만족하면 사용자 정의 에러인 BigNumberError를 발생시킨다.
finally
예외 처리에서 사용되는 finally는 에러의 발생 여부와 관계없이 항상 실행되어야 할 코드를 작성하는 데 사용된다.
try:
# 에러가 발생할 가능성이 있는 코드
except 예외 종류:
# 에러 처리 방법
finally:
# 에러 발생 여부와 관계없이 항상 실행되는 코드
finally 예시
try:
# ...
except BigNumberError as err:
print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.")
print(err)
finally:
print("계산기를 이용해 주셔서 감사합니다.")
위 코드에서 finally 블록 안에 있는 코드는 에러 발생 여부와 관계없이 항상 실행된다.
'Python' 카테고리의 다른 글
[Python/파이썬] 메소드 오버라이딩, pass, super (0) | 2023.08.17 |
---|---|
[Python/파이썬] 상속(Inheritance), 다중상속(Multiple Inheritance) (0) | 2023.08.15 |
[Python/파이썬] 클래스(Class), __init__, 멤버변수, 메소드 (0) | 2023.08.09 |
[Python/파이썬] 출력조절, 파일입출력, 파일 불러오기 및 읽기, 피클(pickle) (0) | 2023.08.06 |
[Python/파이썬] 함수 | def, 전역변수&지역변수, 기본값&키워드인자, 가변인자 (0) | 2023.08.04 |