2012-12-10 6 views
0

3 가지 검사를 수행해야하는 함수를 작성했으며 테스트 중 하나가 실패하면 LookupError 유형의 예외를 반환해야하지만 작동하지 않습니다. 예예외를 반환하려면 어떻게해야합니까?

def check_datagram(datagram, src_comp, dst_app): 
    try: 
     src_comp==datagram[0:16] 
    except LookupError: 
     return "Mismatch in src_comp" 
    try: 
     dst_app==datagram[40:48] 
    except LookupError: 
     return "Mismatch in dst_app" 
    try: 
     verify_checksum(datagram) 
    except False: 
     return "Wrong checksum" 
    return True 

(* verify_checksum 다른 함수)

입력 :

check_datagram("1111000000001111000011111111000001010101101010101111111111111111000000001111111100000000","0000111100001111", "11110000") 

예상 출력 : NPE의 대답의 구성에

"Mismatch in dst_app" 

답변

3
def check_datagram(datagram, src_comp, dst_app): 
    if src_comp != datagram[0:16]: 
     raise LookupError("Mismatch in src_comp") 
    if dst_app != datagram[40:48]: 
     raise LookupError("Mismatch in dst_app") 
    if not verify_checksum(datagram): 
     raise LookupError("Wrong checksum") 
    return True # redundant? 
+0

tnx! 그래서 나는 "시도"를 사용할 필요가 없다? – user1816377

+0

@ user1816377 : 그렇지 않습니다. 생각은 검증을하고 잘못된 것이 있다면'LookupError'를 발생시키는 것입니다. – NPE

+1

@ user1816377'try' /'except'는 에러 포착을위한 것입니다 -'raise'는 에러를 발생시키는 것입니다. –

0

당신은 try..except를 사용해야한다. 여기에 선언 된 check_datagram() 함수를 사용할 것이다.

#python3 
try: 
    check_datagram(a,b,c) 
except LookupError as e: 
    print(str(e)) 

제기 된 오류 메시지를받을 수 있습니다.

관련 문제