//------------------------------------------------------------ // BaseException.Set (2) // /// <summary></summary> /// <param name="id"></param> /// <param name="args"></param> //------------------------------------------------------------ internal void Set(IDTYPE id, params Object[] args) { this.ErrorID = id; this.Kind = GetErrorKind(id); this.Arguments = args; this.FormatErrorMessage(out this.Message); }
//------------------------------------------------------------ // CController.ReportError (4) // /// <summary></summary> /// <param name="kind"></param> /// <param name="excp"></param> //------------------------------------------------------------ internal void ReportError(ERRORKIND kind, Exception excp) { if (excp == null) { return; } ReportError(kind, excp.Message); }
//------------------------------------------------------------ // CSResources.FormatErrorMessage (2) // /// <summary> /// <para>Get the format string by id, create an error message with args and locations</para> /// </summary> /// <param name="excp"></param> /// <param name="errorNo"></param> /// <param name="strID"></param> /// <param name="errorKind"></param> /// <param name="fileName"></param> /// <param name="line"></param> /// <param name="col"></param> /// <param name="lineEnd"></param> /// <param name="colEnd"></param> /// <param name="args"></param> /// <returns></returns> //------------------------------------------------------------ static internal string FormatErrorMessage( out Exception excp, ERRORKIND errorKind, string prefix, int errorNo, ResNo resNo, string fileName, int line, int col, int lineEnd, int colEnd, params Object[] args) { string message = null; if (!ErrorUtil.FormatErrorMessage(out message, out excp, resNo, args) && String.IsNullOrEmpty(message)) { // If failed to format, concatenate args to create a message. if (args.Length > 0) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < args.Length; ++i) { string str = args[i].ToString(); if (!String.IsNullOrEmpty(str)) { if (sb.Length > 0) { sb.Append(", "); } sb.Append(str); } } if (sb.Length > 0) { message = sb.ToString(); } } if (String.IsNullOrEmpty(message)) { message = "Unknown error."; } } return(FormatStringUtil.FormatErrorMessageCore( fileName, line, col, lineEnd, colEnd, errorKind, prefix, errorNo, message)); }
//------------------------------------------------------------ // CController.ReportError (1) // /// <summary></summary> /// <param name="kind"></param> /// <param name="message"></param> //------------------------------------------------------------ internal void ReportError(ERRORKIND kind, string message) { CountReportedError(kind); string buffer = FormatStringUtil.FormatErrorMessageCore( null, -1, -1, -1, -1, kind, null, -1, message); WriteLine(buffer); }
//------------------------------------------------------------ // ErrorUtil.IsValidErrorKind // /// <summary></summary> /// <param name="kind"></param> /// <returns></returns> //------------------------------------------------------------ internal static bool IsValidErrorKind(ERRORKIND kind) { switch (kind) { case ERRORKIND.FATAL: case ERRORKIND.ERROR: case ERRORKIND.WARNING: return(true); default: return(false); } }
//------------------------------------------------------------ // CController.CountErrorObject // /// <summary></summary> /// <param name="kind"></param> //------------------------------------------------------------ private void CountReportedError(ERRORKIND kind) { switch (kind) { case ERRORKIND.FATAL: case ERRORKIND.ERROR: ++(this.countOfReportedErrors); //++(this.countOfWarnsReportedAsErrors); break; default: break; } }
//------------------------------------------------------------ // CController.CreateError (3) // /// <summary></summary> /// <param name="kind"></param> /// <param name="excp"></param> /// <param name="error"></param> /// <returns></returns> //------------------------------------------------------------ internal bool CreateError( ERRORKIND kind, Exception excp, out CError error) { error = null; if (excp == null) { return(false); } error = new CError(); error.Initialize(kind, excp); return(true); }
//------------------------------------------------------------ // CController.CreateError (2) // /// <summary></summary> /// <param name="kind"></param> /// <param name="text"></param> /// <param name="error"></param> /// <returns></returns> //------------------------------------------------------------ internal bool CreateError( ERRORKIND kind, string text, out CError error) { error = null; if (String.IsNullOrEmpty(text)) { return(false); } error = new CError(); error.Initialize(kind, text); return(true); }
//------------------------------------------------------------ // BCErrorInfoManager.FormatErrorMessage (3) // /// <summary></summary> /// <param name="excp"></param> /// <param name="errID"></param> /// <param name="errKind"></param> /// <param name="args"></param> /// <returns></returns> //------------------------------------------------------------ internal string FormatErrorMessage( out Exception excp, ERRORKIND errKind, ERRID errID, params Object[] args) { return(FormatErrorMessage( out excp, errID, errKind, null, -1, -1, -1, -1, args)); }
//------------------------------------------------------------ // FormatStringUtil.GetErrorKindString (1) // /// <summary> /// return a string representing an ERRORKIND value. /// </summary> /// <param name="kind"></param> /// <returns></returns> //------------------------------------------------------------ static internal string GetErrorKindString(ERRORKIND kind) { switch (kind) { case ERRORKIND.FATAL: return("fatal error"); case ERRORKIND.ERROR: return("error"); case ERRORKIND.WARNING: return("warning"); //case ERRORKIND.NONE: default: return(null); } }
//------------------------------------------------------------ // BCErrorInfoManager.FormatErrorMessage (2) // /// <summary> /// <para>Get the format string by id, /// create an error message with args and locations</para> /// </summary> /// <param name="excp"></param> /// <param name="errID"></param> /// <param name="errKind"></param> /// <param name="fileName"></param> /// <param name="lineStart"></param> /// <param name="colStart"></param> /// <param name="lineEnd"></param> /// <param name="colEnd"></param> /// <param name="args"></param> /// <returns></returns> //------------------------------------------------------------ internal string FormatErrorMessage( out Exception excp, ERRID errID, ERRORKIND errKind, string fileName, int lineStart, int colStart, int lineEnd, int colEnd, params Object[] args) { int errorNo = -1; ResNo resNo = ResNo.Invalid; ERRORINFO eInfo = GetInfo(errID); if (eInfo != null) { errorNo = eInfo.ErrorNumber; resNo = eInfo.ResourceNumber; if (!ErrorUtil.IsValidErrorKind(errKind)) { errKind = ErrorUtil.GetErrorKind(eInfo.WarningLevel); } } else { resNo = ResNo.CSCSTR_InternalError; args = new Object[] { "invalid error ID in CSResources.FormatErrorMessage" }; } return(ErrorUtil.FormatErrorMessage( out excp, errKind, this.Prefix, errorNo, resNo, fileName, lineStart, colStart, lineEnd, colEnd, args)); }
//------------------------------------------------------------ // CController.ReportError (2b) // /// <summary> /// <para>(ConsoleOutput::ShowErrorIdString in sscli.)</para> /// </summary> /// <param name="errorID"></param> /// <param name="kind"></param> /// <param name="args"></param> //------------------------------------------------------------ internal void ReportError(ALERRID errorID, ERRORKIND kind, params Object[] args) { string msg = null; Exception excp = null; msg = ALErrorInfo.Manager.FormatErrorMessage( out excp, kind, errorID, args); if (msg != null && excp == null) { CountReportedError(kind); WriteLine(msg); return; } if (excp != null) { OnCatastrophicError(excp.Message); } }
//------------------------------------------------------------ // FormatStringUtil.FormatErrorMessageCore // /// <summary> /// <para>Unlike FormatErrorMessage, do not use the format for id. /// Output argument message itself.</para> /// </summary> /// <param name="errorNo"></param> /// <param name="kind"></param> /// <param name="file"></param> /// <param name="line"></param> /// <param name="col"></param> /// <param name="lineEnd"></param> /// <param name="colEnd"></param> /// <param name="prefix"></param> /// <param name="message"></param> /// <returns></returns> //------------------------------------------------------------ static internal string FormatErrorMessageCore( string fileName, int line, int col, int lineEnd, int colEnd, ERRORKIND errorKind, string prefix, int errorNo, string message) { System.Text.StringBuilder sb = new StringBuilder(); string errorKindStr = GetErrorKindString(errorKind); //-------------------------------------------------- // location (file and line, column //-------------------------------------------------- if (!String.IsNullOrEmpty(fileName)) { sb.Append(fileName); if (line > 0 && lineEnd > 0) { sb.AppendFormat("({0},{1})-({2},{3})", line, col, lineEnd, colEnd); } else if (line > 0) { sb.AppendFormat("({0},{1})", line, col); } } //-------------------------------------------------- // kind // Print ": error prefix####" -- only if not a related symbol location (id == -1) //-------------------------------------------------- if (!String.IsNullOrEmpty(errorKindStr)) { if (sb.Length > 0) { sb.Append(": "); } if (errorNo >= 0) { sb.AppendFormat("{0} {1}{2:d4}", errorKindStr, prefix, errorNo); } else { sb.AppendFormat("{0}", errorKindStr); } } else if (errorNo >= 0) { if (sb.Length > 0) { sb.Append(": "); } sb.AppendFormat("{0}{1:d4}", prefix, errorNo); } //-------------------------------------------------- // message //-------------------------------------------------- if (!String.IsNullOrEmpty(message)) { if (sb.Length > 0) { sb.Append(": "); } sb.Append(message); } return(sb.ToString()); }