Skip to content

Commit 3265263

Browse files
committed
Was made refactoring
1 parent 553f351 commit 3265263

File tree

6 files changed

+142
-100
lines changed

6 files changed

+142
-100
lines changed

src/MsieJavaScriptEngine/ActiveScript/ActiveScriptJsEngineBase.ScriptSiteBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ protected ActiveScriptException CreateActiveScriptException(IActiveScriptError e
137137
callStack = JsErrorHelpers.StringifyCallStackItems(GetCallStackItems());
138138
}
139139

140-
message = JsErrorHelpers.GenerateErrorMessage(type, description, documentName,
140+
message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, documentName,
141141
(int)lineNumber, columnNumber, sourceFragment, callStack);
142142
}
143143

src/MsieJavaScriptEngine/ActiveScript/ActiveScriptJsEngineBase.cs

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Reflection;
66
using System.Runtime.InteropServices;
77
using System.Runtime.InteropServices.Expando;
8-
using System.Text;
98

109
using MsieJavaScriptEngine.ActiveScript.Debugging;
1110
using MsieJavaScriptEngine.Constants;
@@ -135,29 +134,25 @@ protected ActiveScriptJsEngineBase(JsEngineSettings settings, string clsid,
135134
{
136135
throw WrapCOMException(e);
137136
}
138-
catch (InvalidOperationException e)
137+
catch (ActiveScriptException e)
139138
{
140-
string message = string.Format(CommonStrings.Engine_JsEngineNotLoaded, _engineModeName) + " " +
141-
e.Message;
139+
string description = e.Description;
140+
string message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, _engineModeName);
141+
142+
var wrapperEngineLoadException = new JsEngineLoadException(message, _engineModeName, e)
143+
{
144+
Description = description
145+
};
142146

143-
throw new JsEngineLoadException(message, _engineModeName, e);
147+
throw wrapperEngineLoadException;
144148
}
145-
catch (ActiveScriptException e)
149+
catch (InvalidOperationException e)
146150
{
147-
int errorNumber = ComHelpers.HResult.GetFacility(e.ErrorCode) == ComErrorCode.FACILITY_CONTROL ?
148-
ComHelpers.HResult.GetCode(e.ErrorCode) : 0;
149-
if (ActiveScriptJsErrorHelpers.IsEngineError(errorNumber))
150-
{
151-
throw new JsEngineException(e.Message, _engineModeName, e);
152-
}
153-
else
154-
{
155-
throw WrapActiveScriptException(e);
156-
}
151+
throw JsErrorHelpers.WrapEngineLoadException(e, _engineModeName);
157152
}
158153
catch (Exception e)
159154
{
160-
throw JsErrorHelpers.WrapUnknownEngineLoadException(e, _engineModeName);
155+
throw JsErrorHelpers.WrapEngineLoadException(e, _engineModeName, true);
161156
}
162157
finally
163158
{
@@ -606,24 +601,31 @@ private JsException WrapActiveScriptException(ActiveScriptException originalExce
606601

607602
private JsEngineLoadException WrapCOMException(COMException originalComException)
608603
{
609-
string jsEngineNotLoadedPart = string.Format(CommonStrings.Engine_JsEngineNotLoaded, _engineModeName);
604+
string description;
610605
string message;
611606

612607
if (originalComException.ErrorCode == ComErrorCode.E_CLASS_NOT_REGISTERED)
613608
{
614-
message = jsEngineNotLoadedPart + " " +
615-
string.Format(CommonStrings.Engine_AssemblyNotRegistered,
616-
_settings.EngineMode == JsEngineMode.Classic ? DllName.JScript : DllName.JScript9) + " " +
609+
description = string.Format(CommonStrings.Engine_AssemblyNotRegistered,
610+
_settings.EngineMode == JsEngineMode.Classic ? DllName.JScript : DllName.JScript9) +
611+
" " +
617612
string.Format(CommonStrings.Engine_IeInstallationRequired, _lowerIeVersion)
618613
;
614+
message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, _engineModeName);
619615
}
620616
else
621617
{
622-
message = jsEngineNotLoadedPart + " " +
623-
string.Format(CommonStrings.Common_SeeOriginalErrorMessage, originalComException.Message);
618+
description = originalComException.Message;
619+
message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, _engineModeName, true);
624620
}
625621

626-
return new JsEngineLoadException(message, _engineModeName, originalComException);
622+
var wrapperEngineLoadException = new JsEngineLoadException(message, _engineModeName,
623+
originalComException)
624+
{
625+
Description = description
626+
};
627+
628+
return wrapperEngineLoadException;
627629
}
628630

629631
/// <summary>

src/MsieJavaScriptEngine/ActiveScript/ActiveScriptJsErrorHelpers.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,6 @@ namespace MsieJavaScriptEngine.ActiveScript
1212
/// </summary>
1313
internal static class ActiveScriptJsErrorHelpers
1414
{
15-
/// <summary>
16-
/// Checks whether the specified error number is engine error
17-
/// </summary>
18-
/// <param name="errorNumber">Error number</param>
19-
/// <returns>Result of check (true - is engine error; false - is not engine error)</returns>
20-
public static bool IsEngineError(int errorNumber)
21-
{
22-
bool result = errorNumber == JScriptSyntaxErrorNumber.OutOfMemory
23-
|| errorNumber == JScriptRuntimeErrorNumber.OutOfMemory;
24-
25-
return result;
26-
}
27-
2815
/// <summary>
2916
/// Checks whether the specified error number is compilation error
3017
/// </summary>

src/MsieJavaScriptEngine/Helpers/JsErrorHelpers.cs

Lines changed: 73 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Text;
66
using System.Text.RegularExpressions;
77

8-
using MsieJavaScriptEngine;
98
using MsieJavaScriptEngine.Extensions;
109
using MsieJavaScriptEngine.Resources;
1110
using 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

src/MsieJavaScriptEngine/JsRt/Edge/ChakraEdgeJsRtJsEngine.cs

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -86,23 +86,11 @@ public ChakraEdgeJsRtJsEngine(JsEngineSettings settings)
8686
}
8787
catch (DllNotFoundException e)
8888
{
89-
throw WrapTypeLoadException(e);
90-
}
91-
#if NETSTANDARD1_3
92-
catch (TypeLoadException e)
93-
#else
94-
catch (EntryPointNotFoundException e)
95-
#endif
96-
{
97-
throw WrapTypeLoadException(e);
98-
}
99-
catch (OriginalException e)
100-
{
101-
throw WrapJsException(e);
89+
throw WrapDllNotFoundException(e);
10290
}
10391
catch (Exception e)
10492
{
105-
throw JsErrorHelpers.WrapUnknownEngineLoadException(e, _engineModeName);
93+
throw JsErrorHelpers.WrapEngineLoadException(e, _engineModeName, true);
10694
}
10795
finally
10896
{
@@ -926,7 +914,7 @@ private WrapperException WrapJsException(OriginalException originalException)
926914
callStack = JsErrorHelpers.StringifyCallStackItems(callStackItems);
927915
}
928916

929-
message = JsErrorHelpers.GenerateErrorMessage(type, description, callStack);
917+
message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, callStack);
930918
}
931919
else
932920
{
@@ -960,7 +948,7 @@ private WrapperException WrapJsException(OriginalException originalException)
960948
}
961949

962950
sourceFragment = JsErrorHelpers.GetSourceFragment(sourceLine, columnNumber);
963-
message = JsErrorHelpers.GenerateErrorMessage(type, description, documentName,
951+
message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, documentName,
964952
lineNumber, columnNumber, sourceFragment);
965953
}
966954
}
@@ -1023,27 +1011,34 @@ private WrapperException WrapJsException(OriginalException originalException)
10231011
return wrapperException;
10241012
}
10251013

1026-
private WrapperEngineLoadException WrapTypeLoadException(TypeLoadException originalTypeLoadException)
1014+
private WrapperEngineLoadException WrapDllNotFoundException(
1015+
DllNotFoundException originalDllNotFoundException)
10271016
{
1028-
string originalMessage = originalTypeLoadException.Message;
1029-
string jsEngineNotLoadedPart = string.Format(CommonStrings.Engine_JsEngineNotLoaded, _engineModeName);
1017+
string originalMessage = originalDllNotFoundException.Message;
1018+
string description;
10301019
string message;
10311020

1032-
if (originalTypeLoadException is DllNotFoundException
1033-
&& originalMessage.ContainsQuotedValue(DllName.Chakra))
1021+
if (originalMessage.ContainsQuotedValue(DllName.Chakra))
10341022
{
1035-
message = jsEngineNotLoadedPart + " " +
1036-
string.Format(CommonStrings.Engine_AssemblyNotRegistered, DllName.Chakra) + " " +
1023+
description = string.Format(CommonStrings.Engine_AssemblyNotRegistered, DllName.Chakra) +
1024+
" " +
10371025
string.Format(CommonStrings.Engine_EdgeInstallationRequired)
10381026
;
1027+
message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, _engineModeName);
10391028
}
10401029
else
10411030
{
1042-
message = jsEngineNotLoadedPart + " " +
1043-
string.Format(CommonStrings.Common_SeeOriginalErrorMessage, originalMessage);
1031+
description = originalMessage;
1032+
message = JsErrorHelpers.GenerateEngineLoadErrorMessage(description, _engineModeName, true);
10441033
}
10451034

1046-
return new WrapperEngineLoadException(message, _engineModeName, originalTypeLoadException);
1035+
var wrapperEngineLoadException = new WrapperEngineLoadException(message, _engineModeName,
1036+
originalDllNotFoundException)
1037+
{
1038+
Description = description
1039+
};
1040+
1041+
return wrapperEngineLoadException;
10471042
}
10481043

10491044
#endregion

0 commit comments

Comments
 (0)