금백조의 개발 블로그

[C#]TryParse를 사용한 문자열을 숫자로 변환 및 예외 처리 본문

Programming Language/C#

[C#]TryParse를 사용한 문자열을 숫자로 변환 및 예외 처리

금백조 2021. 3. 21. 15:56
반응형

서론

 

기존 시스템에서 입력된 object 형식 데이터를 문자열로 변환 후 Convert를 사용하여 숫자로 변환하는 로직이 있었습니다. 그런데 try catch 문으로 예외처리를 하지 않아 잘못 입력된 데이터가 있을 경우 에러가 발생했습니다. 이 문제를 해결하기 위하여 try catch 문을 사용하지 않고 코드를 좀 더 깔끔하게 작성하기 위해 TryParse문을 사용했습니다. 이 과정 속에서 알게 된 TryParse의 특징과 사용법을 예제를 통해 정리해보겠습니다.

 


 

본론

 

[구문 형식]

 

[숫자 형식].TryParse(string [변환할 문자열],out [매개변수])

 

[특징]

 

1. 숫자 형식(decimal, int, double 등...)에 있는 내장 함수입니다.

2. 문자열 변환에 성공할 경우 true, 실패할 경우 false를 반환합니다.

3. out 매개변수에 변환된 숫자가 리턴됩니다.

4. 반환 값을 통해 try catch 문 없이 예외(FormatException, OverflowException 등..)에 대응할 수 있습니다.

 

[주의사항]

 

문자열 변환에 실패할 경우 out 매개변수에 0이 할당됩니다.

 

[예제]

 

//문자열을 숫자로 변환 예제
//실행 환경 : .NET Framework 4.7.2
string str1 = "100000";//숫자 문자열
string str2 = "10 0000";//숫자 중간에 공백 포함된 숫자 문자열(FormatException 발생)
string str3 = "ABCDE";//숫자가 아닌 문자열
string str4 = "999999999999999999999";//int 숫자형식에 OverflowException이 발생하는 숫자 문자열
string str5 = "ABCDE";//숫자가 아닌 문자열
decimal numResult1 = 0;
decimal numResult2 = 0;
decimal numResult3 = 0;
int numResult4 = 0;//OverflowException을 발생시키기 위해 int로 선언
decimal numResult5 = 1234567890;//변환에 실패했을 경우 리턴값 확인 위한 변수 선언

numResult1 = (decimal.TryParse(str1, out numResult1)) ? numResult1 : -1;//숫자로 변환 성공 > 100000
numResult2 = (decimal.TryParse(str2, out numResult2)) ? numResult2 : -1;//공백이 포함되었으므로 변환 불가능 > -1
numResult3 = (decimal.TryParse(str3, out numResult3)) ? numResult3 : -1;//숫자가 아닌 문자열이므로 변환 불가능 > -1
numResult4 = (int.TryParse(str4, out numResult4)) ? numResult4 : -1;//OverflowException 발생하므로 변환 불가능 > -1
decimal.TryParse(str5, out numResult5);//변환에 실패했을 경우 0이 할당됨.

Console.WriteLine(string.Format("str1 TryParse Result : {0}", numResult1));//100000 출력
Console.WriteLine(string.Format("str2 TryParse Result : {0}", numResult2));//-1 출력
Console.WriteLine(string.Format("str3 TryParse Result : {0}", numResult3));//-1 출력
Console.WriteLine(string.Format("str4 TryParse Result : {0}", numResult4));//-1 출력
Console.WriteLine(string.Format("str5 TryParse Result : {0}", numResult5));//0 출력

 


 

결론

 

오늘은 C#에서 TryParse를 사용하여 문자열을 숫자로 변환하는 방법을 알아보았습니다. 이번 일을 계기로 기존 또는 신규 시스템에서 좀 더 예외로 인해 발생할 수 있는 문제를 항상 인지하면서 사전에 방지하도록 노력해야겠습니다.

 

Reference

 

[문자열을 숫자로 변환하는 방법(C# 프로그래밍 가이드)]

docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/how-to-convert-a-string-to-a-number

 

문자열을 숫자로 변환하는 방법 - C# 프로그래밍 가이드

C#에서 Parse, TryParse 또는 Convert 클래스 메서드를 호출하여 문자열을 숫자로 변환하는 방법을 알아봅니다.

docs.microsoft.com

 

반응형