0

私のアプリでは、system.format 例外を処理する方法がわかりません。以下のコードを参照してください

public Harvest_Project(XmlNode node)
    {
        this._node = node;
        this._name = node.SelectSingleNode("name").InnerText;

        this._created_at = storeTime(node.SelectSingleNode("created-at").InnerText);
        this._updated_at = storeTime(node.SelectSingleNode("updated-at").InnerText);
        this._over_budget_notified_at = storeTime(node.SelectSingleNode("over-budget-notified-at").InnerText);
        this._latest_record_at = storeTime(node.SelectSingleNode("hint-latest-record-at").InnerText);
        this._earliest_record_at = storeTime(node.SelectSingleNode("hint-earliest-record-at").InnerText);

        this._billable = bool.Parse(node.SelectSingleNode("billable").InnerText);

        try
        {
                this._id = Convert.ToInt32(node.SelectSingleNode("id").InnerText);
                this._client_id = Convert.ToInt32(node.SelectSingleNode("client-id").InnerText);
                this._budget = float.Parse(node.SelectSingleNode("budget").InnerText);
                this._fees = Convert.ToInt32(getXmlNode("fees", node));

        }
        catch (FormatException e)
        {

           Console.WriteLine();
        }
        catch (OverflowException e)
        {
            Console.WriteLine("The number cannot fit in an Int32.");
        }

        this._code = node.SelectSingleNode("code").InnerText;
        this._notes = node.SelectSingleNode("notes").InnerText;

    }

ここで、try と catch ブロックでは、すべてのノードが int 値を取りますが、_fees は "0" 値を取ります。フォーマットの例外が表示されます。ノードに空の文字列が表示されないようにしたいだけです。この例外を処理したい。つまり、「this._fees = Convert.ToInt32(getXmlNode("fees", node));」という行で例外をスローすべきではありません。私が望む int 値を返しているからです。

どうすればそれを達成できますか?

4

2 に答える 2

0

あなたはxmlを投稿しておらず、getXmlNode関数
が見つかりませんが、int以外のコンテンツを持つXmlNodeを返すと信じています(そうでなければ、InnerTextプロパティを使用します.

これを試してください:

XmlNode fees = getXmlNode(...)
var curr = fees.FirstChild;
int _fees = 0;
while (curr != null) {
    _fees += (Convert.ToInt32(curr.InnerText);
    curr = curr.NextSibling();
}
于 2013-08-23T14:06:17.163 に答える