강력하고 유지 관리가 가능한 애플리케이션을 만들려면 효과적인 예외 처리 코드를 작성하는 것이 필수적입니다.
다음은 Python에서 예외 처리 코드를 작성하기 위한 몇 가지 모범 사례입니다.
구체적으로 작성하세요.
try: # Code that might raise an exception except ValueError as e: print(f"Value error occurred: {e}")
특정 예외 포착:
try: # Code that might raise an exception except Exception as e: # Catch all exceptions if necessary print(f"An error occurred: {e}")
try: # Code that might raise an exception except ValueError as e: print(f"Value error: {e}") else: print("No exceptions occurred.") finally: print("This will always be executed.")
import logging logging.basicConfig(level=logging.ERROR) try: # Code that might raise an exception except Exception as e: logging.error(f"An error occurred: {e}")
try: # Code that might raise an exception except ValueError as e: logging.error(f"Value error: {e}") raise # Re-raise the exception
with open('file.txt', 'r') as file: content = file.read()
-애플리케이션이 충돌하도록 허용하는 대신 대체 메커니즘이나 사용자에게 친숙한 오류 메시지를 제공하세요.
try: with open('config.json', 'r') as file: config = json.load(file) except FileNotFoundError: print("Config file not found, using defaults.") config = {"default": "value"}
try: # Code that might raise an exception except Exception as e: pass # Bad practice - you're ignoring the error
def divide(a, b): """ Divides two numbers. :param a: Numerator. :param b: Denominator. :return: The result of the division. :raises ZeroDivisionError: If the denominator is zero. """ if b == 0: raise ZeroDivisionError("Cannot divide by zero.") return a / b
class InvalidInputError(Exception): """Exception raised for invalid inputs.""" pass def process_input(value): if not isinstance(value, int): raise InvalidInputError("Input must be an integer.") return value * 2
def test_divide(): assert divide(10, 2) == 5 with pytest.raises(ZeroDivisionError): divide(10, 0)
예외적인 경우에 예외 사용:
# Bad practice: using exceptions for control flow try: while True: value = next(iterator) except StopIteration: pass # End of iteration
try: result = process_input(input_value) except InvalidInputError as e: raise ValueError("Failed to process input") from e
이러한 모범 사례를 따르면 오류를 적절하게 관리하고 애플리케이션의 안정성을 향상시키는 더욱 강력하고 유지 관리가 가능하며 읽기 쉬운 예외 처리 코드를 작성할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3