Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# FormatException 예외 완벽 정리: 발생 원인과 해결 방법

FormatException은 메서드에 전달된 인수의 형식(포맷)이 유효하지 않을 때 발생하는 예외입니다. 주로 문자열을 숫자로 변환하는 과정에서 변환할 수 없는 형식의 값이 입력될 때 나타납니다.

FormatException이 발생하는 경우

가장 대표적인 예는 int.Parse() 메서드입니다. 이 메서드는 문자열을 정수(int)로 변환하는 역할을 하는데, 정수가 아닌 값을 전달하면 FormatException이 발생합니다.

예를 들어, 소수점이 포함된 문자열 "3.5"를 int.Parse()에 넘기면 정수로 변환할 수 없기 때문에 예외가 던져집니다.

예제 코드

using System;

class Demo {
    static void Main() {
        string str = "3.5";
        int res = int.Parse(str);
    }
}

실행 결과

위 프로그램을 실행하면 정수가 아닌 값을 전달했기 때문에 다음과 같은 오류가 발생합니다.

Unhandled Exception:
System.FormatException: Input string was not in a correct format.

FormatException 방지 방법

이러한 예외를 사전에 방지하려면 int.TryParse() 메서드를 사용하는 것이 좋습니다. TryParse는 변환에 실패해도 예외를 던지지 않고 false를 반환하므로 안전하게 처리할 수 있습니다.

using System;

class Demo {
    static void Main() {
        string str = "3.5";

        if (int.TryParse(str, out int res)) {
            Console.WriteLine($"변환 성공: {res}");
        } else {
            Console.WriteLine("정수로 변환할 수 없는 형식입니다.");
        }
    }
}

또한 소수점이 포함된 문자열이라면 double.Parse()decimal.Parse()처럼 해당 형식에 맞는 파서를 사용하는 것도 좋은 해결책입니다.

정리

  • FormatException은 인수의 형식이 잘못되었을 때 발생합니다.
  • int.Parse()에 정수가 아닌 문자열을 넘기면 예외가 발생합니다.
  • TryParse()를 사용하면 예외 없이 안전하게 변환 여부를 확인할 수 있습니다.