55using System . Text ;
66using System . Text . RegularExpressions ;
77
8- using MsieJavaScriptEngine ;
98using MsieJavaScriptEngine . Extensions ;
109using MsieJavaScriptEngine . Resources ;
1110using MsieJavaScriptEngine . Utilities ;
@@ -117,36 +116,88 @@ internal static string StringifyCallStackItems(CallStackItem[] callStackItems)
117116 #region Generation of error messages
118117
119118 /// <summary>
120- /// Generates a error message
119+ /// Generates a engine load error message
120+ /// </summary>
121+ /// <param name="description">Description of error</param>
122+ /// <param name="engineModeName">Name of JS engine mode</param>
123+ /// <param name="quoteDescription">Makes a quote from the description</param>
124+ /// <returns>Engine load error message</returns>
125+ internal static string GenerateEngineLoadErrorMessage ( string description , string engineModeName ,
126+ bool quoteDescription = false )
127+ {
128+ if ( engineModeName == null )
129+ {
130+ throw new ArgumentNullException ( nameof ( engineModeName ) ) ;
131+ }
132+
133+ if ( string . IsNullOrWhiteSpace ( engineModeName ) )
134+ {
135+ throw new ArgumentException (
136+ string . Format ( CommonStrings . Common_ArgumentIsEmpty , nameof ( engineModeName ) ) ,
137+ nameof ( engineModeName )
138+ ) ;
139+ }
140+
141+ string jsEngineNotLoadedPart = string . Format ( CommonStrings . Engine_JsEngineNotLoaded ,
142+ engineModeName ) ;
143+ string message ;
144+
145+ if ( ! string . IsNullOrWhiteSpace ( description ) )
146+ {
147+ StringBuilder messageBuilder = StringBuilderPool . GetBuilder ( ) ;
148+ messageBuilder . Append ( jsEngineNotLoadedPart ) ;
149+ messageBuilder . Append ( " " ) ;
150+ if ( quoteDescription )
151+ {
152+ messageBuilder . AppendFormat ( CommonStrings . Common_SeeOriginalErrorMessage , description ) ;
153+ }
154+ else
155+ {
156+ messageBuilder . Append ( description ) ;
157+ }
158+
159+ message = messageBuilder . ToString ( ) ;
160+ StringBuilderPool . ReleaseBuilder ( messageBuilder ) ;
161+ }
162+ else
163+ {
164+ message = jsEngineNotLoadedPart ;
165+ }
166+
167+ return message ;
168+ }
169+
170+ /// <summary>
171+ /// Generates a script error message
121172 /// </summary>
122173 /// <param name="type">Type of the script error</param>
123174 /// <param name="description">Description of error</param>
124175 /// <param name="documentName">Document name</param>
125176 /// <param name="lineNumber">Line number</param>
126177 /// <param name="columnNumber">Column number</param>
127178 /// <param name="sourceFragment">Source fragment</param>
128- /// <returns>Error message</returns>
129- internal static string GenerateErrorMessage ( string type , string description ,
179+ /// <returns>Script error message</returns>
180+ internal static string GenerateScriptErrorMessage ( string type , string description ,
130181 string documentName , int lineNumber , int columnNumber , string sourceFragment )
131182 {
132- return GenerateErrorMessage ( type , description , documentName , lineNumber , columnNumber ,
183+ return GenerateScriptErrorMessage ( type , description , documentName , lineNumber , columnNumber ,
133184 sourceFragment , string . Empty ) ;
134185 }
135186
136187 /// <summary>
137- /// Generates a error message
188+ /// Generates a script error message
138189 /// </summary>
139190 /// <param name="type">Type of the script error</param>
140191 /// <param name="description">Description of error</param>
141192 /// <param name="callStack">String representation of the script call stack</param>
142- /// <returns>Error message</returns>
143- internal static string GenerateErrorMessage ( string type , string description , string callStack )
193+ /// <returns>Script error message</returns>
194+ internal static string GenerateScriptErrorMessage ( string type , string description , string callStack )
144195 {
145- return GenerateErrorMessage ( type , description , string . Empty , 0 , 0 , string . Empty , callStack ) ;
196+ return GenerateScriptErrorMessage ( type , description , string . Empty , 0 , 0 , string . Empty , callStack ) ;
146197 }
147198
148199 /// <summary>
149- /// Generates a error message
200+ /// Generates a script error message
150201 /// </summary>
151202 /// <param name="type">Type of the script error</param>
152203 /// <param name="description">Description of error</param>
@@ -155,8 +206,8 @@ internal static string GenerateErrorMessage(string type, string description, str
155206 /// <param name="columnNumber">Column number</param>
156207 /// <param name="sourceFragment">Source fragment</param>
157208 /// <param name="callStack">String representation of the script call stack</param>
158- /// <returns>Error message</returns>
159- internal static string GenerateErrorMessage ( string type , string description , string documentName ,
209+ /// <returns>Script error message</returns>
210+ internal static string GenerateScriptErrorMessage ( string type , string description , string documentName ,
160211 int lineNumber , int columnNumber , string sourceFragment , string callStack )
161212 {
162213 if ( description == null )
@@ -386,13 +437,18 @@ private static void WriteRuntimeErrorDetails(StringBuilder buffer,
386437
387438 #region Exception wrapping
388439
389- public static JsEngineLoadException WrapUnknownEngineLoadException ( Exception originalException ,
390- string engineModeName )
440+ public static JsEngineLoadException WrapEngineLoadException ( Exception exception ,
441+ string engineModeName , bool quoteDescription = false )
391442 {
392- string message = string . Format ( CommonStrings . Engine_JsEngineNotLoaded , engineModeName ) + " " +
393- string . Format ( CommonStrings . Common_SeeOriginalErrorMessage , originalException . Message ) ;
443+ string description = exception . Message ;
444+ string message = GenerateEngineLoadErrorMessage ( description , engineModeName , quoteDescription ) ;
445+
446+ var jsEngineLoadException = new JsEngineLoadException ( message , engineModeName , exception )
447+ {
448+ Description = description
449+ } ;
394450
395- return new JsEngineLoadException ( message , engineModeName , originalException ) ;
451+ return jsEngineLoadException ;
396452 }
397453
398454 #endregion
0 commit comments