2016-08-08 2 views
0

通貨文字列(「4.00ユーロ」や「14.50ドル」など)を解析するメソッドがありますが、解析エラーがあり、FormatExceptionがスローされます。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 
} 

どういうことですか?または、私は何らかの種類のハックを使うべきですか?

ありがとうございます。

+3

あなたは/ tryparse使う代わりに試みることができますキャッチ – BugFinder

+0

うん、うまくいくかもしれない、ありがとう! –

+1

C#に通貨形式があることを示すだけです。 https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx私はあなたがそれを使用する場合ではないかもしれないが、もっと知っていることを知っている.. :) – kuskmen

答えて

3

BugFinderは、あなたがTryParseを使用することができ、言ったように:

double parsedNumber; 

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

別の方法としては、tryブロックの範囲外の文字列を移動することです:

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

優秀な答え!ありがとうございました! –

関連する問題