1

コードを実行しようとすると、次のエラーが発生します。

TypeError: エラー #1010: 用語が定義されておらず、プロパティがありません。

    private function calculateFIX001Value(custfields:Array):Number
    {
        var result:Number = new Number;
        var valueObj:Object;

        try{
                var markUp:Number = 0.01;
                var projectValue:String = "";
                var marketCategory:String = "";

                for each (var custField:Object in custfields)
                {
                    if (custField.fieldLabel == 'Segment Category')
                        marketCategory = custField.selectedValue[0];

                    if (custField.fieldLabel == 'Project Value (R)')
                        projectValue = custField.selectedValue[0].toString().replace("R","");
                        projectValue = projectValue.replace(",","");
                        projectValue = projectValue.replace(",","");
                        projectValue = projectValue.replace(",","");
                }

                switch (marketCategory)
                {
                    case "23": //5% Markup for Building
                        markUp = new Number(5 / 100);
                        break;
                    case "24": //11% Markup for Civils
                        markUp = new Number(11 / 100);
                        break;
                    case "25": //2% Markup for Scaffolding
                        markUp = new Number(2 / 100);
                        break;
                    default:
                        break;
                }

                if ((projectValue != "" && projectValue != '0') && marketCategory != "")
                {
                    var revenue:Number = new Number;
                    //if (!_model.myProfile.switchOpportunityInMillions)
                    //  revenue = parseFloat(projectValue) * 1000000 * markUp;
                    //else
                        revenue = parseFloat(projectValue) * markUp;
                    valueObj = new Object;
                    valueObj.label = "Expected Revenue";
                    valueObj.value = revenue;
                    //result.push(valueObj);
                    result = revenue;
                    //rm.saveOpportunityValue(_currentOpportunity.id, revenue);
                }
                else
                {
                    var errorObj:Object = new Object;
                    var errMsg:String = "";

                    if (projectValue == '' || projectValue == '0')
                        errMsg = "Project value not specified";

                    if (marketCategory == "")
                    {
                        if (errMsg != "")
                            errMsg += " or no Segment Category has been selected";
                        else
                            errMsg = "No Segment Category has been selected";
                    }
                    errorObj.label = 'Cannot calculate value.';
                    errorObj.value = errMsg + '.';
                    //result.push(errorObj);

                    result = 0;
                }
        } catch(e:Error) {
            Alert.show(e.toString());
        }

        return result;
    }
4

2 に答える 2

2

TypeError: エラー #1010 は「Null ポインター例外」とも呼ばれ、null オブジェクト プロパティにアクセスしようとしていることを意味します。

スタック トレースが示す行を見ると、問題なく理由がわかる場合があります。

于 2012-10-02T13:39:54.317 に答える
0

これがあなたの問題を解決するのを助けるための間接的な答えです:(あなたのコードには潜在的にnullまたは未定義でこのエラーを引き起こす可能性のあるものがたくさんあるので)

ほとんどすべてのコードがに含まれているtry/catchため、エラーが実際にスローされるのではなく、キャッチされたエラーを追跡しているだけです。

エラーをスローします(try / catchを削除するか、catchブロックに手動でスローします)。

catch(e:Error) {
    Alert.show(e.toString()); //instead of this, for debugging, do the line below:
    Throw e; //this will throw the error, so you will get your stack trace and the line number of error
}

エラーの行番号を取得してスタックトレースを確認するには、デバッグプレーヤーまたはIDE(FlashやFlashBuilderなど)で実行している必要があります。

于 2012-10-02T16:39:04.567 に答える