2017-11-18 7 views
0

나는 항상 예외가 실제 예외적 인 경우에만 던져 져야하고 예상되는 오류 경우에 사용되어서는 안된다는 것을 배웠다. 여기나쁜 사용자 입력을 해결하기 위해 예외를 사용해야합니까?

def do_stuff_with_number(n): 
      print(n) 

    the_list = (1, 2, 3, 4, 5) 

    for i in range(20): 
     try: 
      do_stuff_with_number(the_list[i]) 
     except IndexError: # Raised when accessing a non-existing index of a list 
      do_stuff_with_number(0) 

를 확인하고, 사용자 입력 에러를 해결하기 위해 사용되는 예외 :하지만 Exception Handling 튜토리얼 I이 예 알았다. 예외에 대한 나쁜 예가 아닌가? 또는이 방법으로 사용하는 것이 좋은 경우가 있습니까?

답변

1

예외는 프로그램을 즉시 종료하는 데 주로 사용되므로 대부분의 오류를 처리하는 가장 좋은 방법입니다. 사용자 입력과 관련하여 사용자에게 다른 입력을 다시 요청하는 것이 더 쉽습니다.

0

예외는 예상치 못한 문제를 처리하는 좋은 방법입니다. 이 양식은 괜찮 으면서, 생산 환경에서 가장 일반적인 예외를 더 명확히 다루는 것이 좋습니다.

0

"매우 나쁨"예제는 아닙니다. 예외는 존재하지 않는 값에 액세스하는 것과 같이 발생해서는 안되는 것에주의를 집중시키기위한 것입니다.

내가 주장 할 수있는 유일한 것은 예외가 처리되는 방식입니다. 같은 함수를 호출하지만 0 기본 매개 변수를 사용하는 이유는 무엇입니까? the_list 그 자체 (쪽지 : 목록이 아닌 tuple, 목록이 아님)에 0이 포함되어 있으면 어떨까요? 그리고 그 요소가 존재하지만 예기치 않은 경우에는 어떻게 될까요?

일반적인 역할로서, 프로그램이 당신을 위해 실패하지 않도록하십시오. 특정 지점에서 뭔가 이상하지 않다는 것을 알고 있으면 오류를 던져주세요! 호출자는 항상 오류를 잡아서 유용한 정보를 처리해야합니다. 마지막으로, tryfor 루프 안에 있습니다. 즉, 어떤 튜플 값 (또는 모두)을 do_stuff_with_number() 함수로 처리 할 수 ​​없어도 상관하지 않습니다. 내 생각에 이와 같은 상황은 if으로 처리 할 수 ​​있으며 반복하는 동안 the_list입니다.