예제 #1
0
        public ErrorResult EnrichError(SpreadsheetWorkbook spreadsheetWorkbook, Exception e)
        {
            var formulaName = spreadsheetWorkbook.GetFormulaName();

            if (e.GetType() == typeof(ExpressionParseException))
            {
                var error = "Invalid expression found in tax formula [" + formulaName +
                            "]. Check that separators and delimiters use the English locale.";
                return(new ErrorResult(formulaName, error, spreadsheetWorkbook.GetPresentation()));
            }

            if (e.Message.StartsWith("Circular Reference"))
            {
                var error = parseCircularReferenceException(e, formulaName);
                return(new ErrorResult(formulaName, error, spreadsheetWorkbook.GetPresentation()));
            }

            if ("Object reference not set to an instance of an object".Equals(e.Message) &&
                StackTraceContains(e, "vLookup"))
            {
                return(new ErrorResult(formulaName, "Missing Lookup Table", spreadsheetWorkbook.GetPresentation()));
            }
            if ("No matches found".Equals(e.Message))
            {
                var error = parseNoMatchException(e, formulaName);
                return(new ErrorResult(formulaName, error, spreadsheetWorkbook.GetPresentation()));
            }

            return(new ErrorResult(formulaName, e.Message, spreadsheetWorkbook.GetPresentation()));
        }
예제 #2
0
        public ErrorResult EnrichError(SpreadsheetWorkbook spreadsheetWorkbook, Exception e)
        {
            var formulaName = spreadsheetWorkbook.GetFormulaName();

            var error = _errorValidators
                        .FirstOrDefault(ev => ev.Validate(e))
                        ?.ErrorMessage(e, formulaName)
                        ?? e.Message;

            return(new ErrorResult(formulaName, error, spreadsheetWorkbook.GetPresentation()));
        }