try :
오류가 발생할 수 있는 문장
except 오류이름 as 객체:
오류 발생 시 실행할 문장
모든 예외클래스의 부모클래스는 Exception
따라서 어떤 오류든지 상관없이 except로 처리할 때는
"오류 이름" 자리에 예외의 최상위 부모인 Exception을 작성한다.
try:
int(input("정수 입력: "))
except Exception as e:
print("정수만 입력하세요")
print("반드시 실행되어야 할 문장")
어떤 에러가 나오는지 콘솔창에서 확인하려고 할때 사용
try:
print(10 / 0)
except Exception as e:
print(e.__str__)
'바보'라는 닉네임 사용 못하도록 만들기
class NickNameError(Exception):
pass
def checkNickName(name):
if name == "바보":
raise NickNameError
nickname = input("닉네임 : ")
try:
checkNickName(nickname)
print("닉네임 생성 성공!")
except NickNameError :
print("비속어는 사용할 수 없습니다.")
외부에서 채팅 문자열을 받아와서 in으로 비속어 검사하기
비속어는 바보, 멍청이, 똥개
사용자 예외처리로 선언하여 만든다. 비속어가 없다면 채팅 메세지를 출력한다.
class BadWordError(Exception):
pass
chat = ""
def checkChatting(temp):
badWords = ["바보", "멍청", "똥개"]
for i in badWords:
if i in temp :
global chat // 전역변수를 안에서 수정하고 있으므로 global함수로 끌어온다.
chat = temp.replace(i,"**") // badWords에 속하는 것을 **로 변경해준다.
raise BadWordError()
while True:
chat = input("채팅[나가기:q] : ")
if chat.lower() == 'q':
break
//lower는 문자열을 소문자로 바꿔주는 함수(나가기가 소문자q이기 때문에 적용)
try:
checkChatting(chat)
print(chat)
except BadWordError:
cnt += 1
print("%d회 비속어를 사용하셨습니다." %cnt)
print(chat)