2016-08-08 6 views
0

통화 문자열 (예 : "4.00"또는 "$ 14.50")을 구문 분석하는 메서드가 있지만 때때로 구문 분석 오류가 있으며 FormatException을 throw합니다.FormatException을 던진 문자열을 확인하는 방법은 무엇입니까?

내가 원하는 것은 데이터베이스에 구문 분석 할 수없는 문자열 (예외가 발생 함)을 보내는 것입니다.

try 
{ 
    string euroNumber = "€4.00"; 

    // Will throw a FormatException 
    double parsedNumber = Double.Parse(euroNumber, NumberStyles.Currency); 
} 
catch (FormatException ex) 
{ 
    string stringThatThrewTheException; // should be "€4.00" in this case 

    // [Omitted] Sending to server logic 
} 

어떻게 든 가능합니까? 아니면 어떤 종류의 해킹을 사용해야합니까?

미리 감사드립니다.

BugFinder 말했듯이
+3

/잡아 – BugFinder

+0

그래, 그럴 수도, 고마워! –

+1

C#에서 통화 형식이 있음을 보여 주기만하면됩니다. https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx 이걸 사용하는 경우가 아니라는 것을 알지만, 더 많이 알게됩니다. :) – kuskmen

답변

3

, 당신은 TryParse를 사용할 수 있습니다

double parsedNumber; 

var result = Double.TryParse(euroNumber, NumberStyles.Currency, CultureInfo.CurrentCulture, out parsedNumber); 
if (!result) 
{ 
    // send error 
} 

또 다른 대안은 try 블록의 범위 이외의 문자열을 이동하는 것입니다 : 당신은 tryparse 대신 시도로 사용할 수

string euroNumber = "€4.00"; 
    try 
    { 
     // Will throw a FormatException 
     double parsedNumber = Double.Parse(euroNumber, NumberStyles.Currency); 
    } 
    catch (FormatException ex) 
    { 
     // Have access to euroNumber here now 
     // [Omitted] Sending to server logic 
    } 
+0

우수 답변 ! 고맙습니다! –

관련 문제