Programming/C# - Window

C#/ try-catch문과 using문 비교

esoog Polaris 2024. 9. 20. 16:42
반응형

# `try-catch` 문과 `using` 문:

모두 **자원 관리**나 **오류 처리**를 목적으로 사용되지만, 그 목적과 사용되는 상황이 다릅니다. 각각의 차이점과 사용 방법을 설명하겠습니다.

 

 

 


# `try-catch` 문
`try-catch` 문은 **예외(Exception) 처리**를 위해 사용됩니다. 코드에서 오류가 발생할 가능성이 있는 부분을 `try` 블록에 작성하고, 오류가 발생하면 그 오류를 `catch` 블록에서 처리합니다.

            try
            {
                using (StreamWriter text = File.CreateText(filePath))
                {
                    foreach (string sentence in contents)
                    {
                        text.WriteLine(sentence);
                    }
                }

                return 0;
            }
            catch (Exception ex)
            {
                // DebugHandler;
                return 301;
            }
            finally
            {
           
            }


- `try` 블록에서 예외가 발생하면, 프로그램이 즉시 `catch` 블록으로 넘어가서 예외를 처리합니다.
- `finally` 블록은 예외가 발생하더라도 **항상 실행**되는 코드를 넣는 부분입니다. 자원 해제나 정리 작업에 자주 사용됩니다.

 

 

 


# **`using` 문** (위의 코드 참고)
`using` 문은 **자원을 자동으로 해제**하기 위한 방법입니다. 주로 **IDisposable** 인터페이스를 구현한 객체를 사용하는 경우, 자원을 명시적으로 해제하지 않고도 자동으로 해제되도록 할 때 사용됩니다. 예를 들어 파일 스트림, 데이터베이스 연결 등이 해당됩니다.

`using` 문이 끝나면 **자동으로 `Dispose()`** 메서드가 호출되어 자원이 해제됩니다. 이로 인해 자원 누수를 방지할 수 있습니다.

 

 

  • 짧은 수명의 자원을 사용할 때: using 문이 적합하다 (예: 파일 스트림, 데이터베이스 연결 등).
  • 장기적인 네트워크 연결을 사용할 때: using 문을 사용하는 대신 명시적으로 자원을 관리하는 것이 좋다 (예: 네트워크 스트림, 소켓 등).

 

 

 

 


# `try-catch`와 `using`의 차이점:
1. **사용 상황**:
   - `try-catch`: 네트워크 오류, 파일 접근 오류 등 **런타임 오류**를 처리할 때 사용됩니다. 예외가 발생할 수 있는 모든 코드에서 사용할 수 있습니다.
   - `using`: **IDisposable**을 구현한 객체(파일, DB 연결, 소켓 등)를 사용할 때 사용됩니다. 자원 관리를 자동화하고 메모리 누수를 방지하기 위한 목적으로 사용됩니다.

2. **자동 자원 해제**:
   - `try-catch`: 자원 해제를 자동으로 처리하지 않기 때문에 **finally** 블록에서 수동으로 자원을 해제해야 합니다.
   - `using`: 자동으로 자원을 해제하기 때문에, 코드를 더 간결하고 안전하게 작성할 수 있습니다.

728x90

'Programming > C# - Window' 카테고리의 다른 글

C#/ Dispatcher(디스패처)에 관해  (0) 2024.09.21
C#/ 파일 프로세스 실행  (1) 2024.09.20
C#/ WPF 4. 기본 wpf 다루기  (0) 2024.09.20
C#/ WPF 3. 관리자 권한 사용  (1) 2024.09.20
C#/ WPF 2. 프레임 태그 사용  (1) 2024.09.20