>source

가져온 메서드를 실행하는 동안 일부 레코드에 대해 예외가 발생하는 코드 블록이 있습니다 (아래 참조). 내 목표는 실행을 중지하는 것이 아니라 오류가있을 때 일부 값을 인쇄 (데이터의 문제를 이해하기 위해)하고 계속하는 것입니다. 나는 "try ... except"를 사용하기 위해 다양한 방법을 시도했지만, 운이 없다! 누군가 pls를보고 제안 할 수 있습니까? 미리 감사드립니다!

아래 코드

if student_name not in original_df_names_flat:
    for org in orgs:
        data = calculate(org, data)
    result = imported_module.execute(data) # here's the line where exception happens
    return result
else:
    return data

  • 답변 # 1

    if student_name not in original_df_names_flat:
        for org in orgs:
            data = calculate(org, data)
        result = None  # May fail to get assigned if error in imported_module
        try:
            result = imported_module.execute(data) # here's the line where exception happens
        except Exception as e:
            print(f'{e}')  # probably better to log the exception
        return result
    else:
        return data
    
    

  • 답변 # 2

    두 곳에서 예외가 발생할 수 있다고 생각합니다. 그래서 이것을 시도하십시오. 예외 라인과 다른 가능성을 다룹니다. 따라서 프로그램이 계속 실행되어야합니다.

    둘째, 루프가 조직의 모든 데이터를 처리하도록 두 번째 try 절의 들여 쓰기를 조정했습니다. 모든 결과를 반환하기 위해 '결과'목록을 추가했습니다.

    if student_name not in original_df_names_flat:
        
        results = []
        for org in orgs:
            try:
                data = calculate(org, data)
            except Exception as e:
                print(str(e))
                
            try:
                result = imported_module.execute(data) # here's the line where exception happens
                results.append(result)
            except Exception as e:
                print(str(e))
            
        return results
    else:
        return data
    
    

  • 답변 # 3

    아래 솔루션이 문제를 해결했습니다.

    if student_name not in original_df_names_flat:
        for org in orgs:
            data = calculate(org, data)
        try:
            result = imported_module.execute(data) # here's the line where exception happens
        except exception as e:
            print ("exception happened", e)
            pass
            return data
        return result
    else:
        return data
    
    

    위의 솔루션이 문제를 해결했습니다.

관련 자료

  • 이전 amazon s3 - Rails 61의 Active Storage에 대한 공용 액세스
  • 다음 c++ - 최대 사회적 거리 유지