import random
l = random.sample(range(10), 10)
dic = {'apple': 'red'}
try:
print(l[20])
print(dic['yellow'])
# 에러의 클래스를 변수 e로 지정
except IndexError as e:
print('리스트의 범위를 벗어났습니다.')
print(e)
# 위에서 에러가 걸리면 처음 걸린 부분만 실행된다.
except KeyError as e:
print('입력한 {}는 해당 딕셔너리에 키로 존재하지 않습니다.'.format(e))
print('program terminated')
"""
1. 정규표현식으로 검사했을때 일치하는 패턴이 없을 경우 발생할 NotMatchedException을 정의
2. 패턴문자열과 소스문자열을 매개변수로 갖는 search_from_source함수를 정의하고, re.search에 소스 문자열을 전달했을때 MatchObject를 찾지 못하면 NotMatchedException을 발생시킴
3. try~except 구문에서 위 함수를 실행해 예외를 발생시킴 (raise NotMatchedException(arg1, arg2))
4. 위 구문에서 else절을 추가해서 예외가 발생하지 않았을 경우 검색결과를 출력
5. 위 구문에 finally절을 추가해서 프로그램이 끝났음을 출력
"""importreclassNotMatchedException(Exception):"""
패턴과 소스를 받아 매치되지 않았음을 알려주는 Exception 클래스
"""def__init__(self,pattern_string,source_string):self.pattern_string=pattern_stringself.source_string=source_string# 스트링을 출력하는 내장함수, 클래스가 호출되면 항상 아래 내용이 출력됨def__str__(self):return'Pattern "{}" is not matched in source "{}"'.format(self.pattern_string,self.source_string,)defsearch_from_source(pattern_string,source_string):# re.search는 찾으면 찾은 문자열을 반환, 못찾으면 None을 반환result=re.search(pattern_string,source_string)# 결과가 나오면 결과를 반환ifresult:returnresult# 결과가 나오지 않으면 예외로 NoMatchedException를 발생시킨다.raiseNotMatchedException(pattern_string,source_string)try:source='Lux, the Lady of ewrwerer'pattern="Man"# pattern = r'L\w{3}\b'm=search_from_source(pattern,source)# NotMatchedException 예외가 발생했을 경우exceptNotMatchedExceptionase:print(e)# 에러가 발생하지 않았을 경우else:print('Search result : {}'.format(m.group()))# 에러가 발생하든 발생하지 않든 아래 내용이 실행finally:print('Program terminated')