예외처리

예외

  • 예외는 프로그램 실행 중에 발생하는 예기치 않은 상황을 의미한다.
  • 예외는 프로그램의 정상적인 흐름을 방해하고 오류를 야기할 수 있다.

예외 처리의 필요성과 장점

  • 예외 처리는 예외 상황에 대비하여 프로그램을 안정적으로 유지하는 데 도움을 준다.
  • 예외 처리를 통해 오류 상황을 적절히 처리하고, 프로그램의 실행을 계속할 수 있다.
  • 예외 처리는 프로그램의 안정성을 높이고 디버깅을 용이하게 한다.

try-catch

try
{
    // 예외가 발생할 수 있는 코드
}
catch (Exception ex)
{
    // 예외가 발생했을 때 처리할 코드
}
finally
{
    // 항상 실행되어야 하는 코드
}

박싱(Boxing)과 언박싱(Unboxing)

값 형식과 참조 형식 간의 변환을 나타낸다. 값 형식은 스택에 저장되고 직접 값을 가지며, 참조 형식은 힙에 저장되고 메모리 주소를 가리키는 참조를 가진다.

박싱은 값 형식을 참조 형식으로 변환하는 과정이며, 언박싱은 참조 형식을 값 형식으로 변환하는 과정이다.

int i = 42; // 값 형식 변수 선언
object obj = i; // 박싱: 값 형식이 참조 형식인 object로 변환됨

int j = (int)obj; // 언박싱: object 형식을 int 형식으로 변환

델리게이트

델리게이트(delegate)는 C#에서 메서드를 참조하는 형식이다. 

델리게이트를 사용하면 메서드를 매개변수로 전달하거나 메서드를 동적으로 할당하고 호출할 수 있다.

delegate int MyDelegate(int x, int y);

// 델리게이트를 사용하여 함수를 호출하는 예제
class Program
{
    static int Add(int x, int y)
    {
        return x + y;
    }

    static void Main(string[] args)
    {
        MyDelegate del = new MyDelegate(Add); // 델리게이트에 함수 할당
        int result = del(3, 4); // 델리게이트를 통해 함수 호출
        Console.WriteLine("Result: " + result); // 출력: Result: 7
    }
}

Func과  Action

FuncAction은 둘 다 델리게이트(delegate)를 나타내는 제네릭(Generic) 타입이다.

Func:  반환 형식이 있는 메서드를 나타낸다.

예를들어 Func<int, string>은 int를 입력으로 받아들이고 string을 반환하는 메서드를 가리킬 수 있다.

Func는 마지막 제네릭 매개변수로 반환 형식을 가져야 한다. 그 전에는 입력 매개변수의 형식들이 위치한다.

최대 16개의 입력 매개변수를 가질 수 있다.

예를들어 Func<int, string, bool>은 int와 string을 입력으로 받아들이고 bool 값을 반환하는 메서드를 가리킨다.

Func<int, string> convertToString = i => i.ToString();
string result = convertToString(123); // "123"

Action: 반환 형식이 없는(void를 반환하는) 메서드를 나타낸다.

Action은 입력 매개변수의 형식들을 나열하는데, 반환 형식이 없기 때문에 제네릭 매개변수 리스트의 마지막에 반환 형식이 존재하지 않는다. 최대 16개의 입력 매개변수를 가질 수 있다.

Action<string> greet = name => Console.WriteLine($"Hello, {name}!");
greet("Alice"); // "Hello, Alice!"

람다

람다(lambda)는 익명 함수를 만들기 위한 방법 중 하나이다.

람다는 함수를 정의하고 호출하는 데 사용되며, 특히 간결한 코드를 작성할 때 유용하다.

(parameters) => expression

//두 수를 더하는 간단한 람다 함수 예제
Func<int, int, int> add = (a, b) => a + b;
int result = add(3, 5); // result는 8이 됩니다.
728x90