void IActiveScriptSite.OnScriptError(IActiveScriptError scriptError) { uint sourceContext; int lineNumber; int characterPosition; String message = "Script error: {1}. Error number {0} (0x{0:X8}): {2} at line {3}, column {4}."; String sourceLine = null; System.Runtime.InteropServices.ComTypes.EXCEPINFO exceptionInfo; try { scriptError.GetSourceLineText(out sourceLine); if (!String.IsNullOrEmpty(sourceLine)) { message += " Source line: '{5}'."; } } catch { // happens most of the time, but we should still try it. } scriptError.GetSourcePosition(out sourceContext, out lineNumber, out characterPosition); lineNumber++; characterPosition++; scriptError.GetExceptionInfo(out exceptionInfo); _lastException = new ScriptException(String.Format(message, exceptionInfo.scode, exceptionInfo.bstrSource, exceptionInfo.bstrDescription, lineNumber, characterPosition, sourceLine)) { Column = characterPosition, Description = exceptionInfo.bstrDescription, Line = lineNumber, Number = exceptionInfo.scode, Text = sourceLine, ScriptError = (ScriptErrorType)exceptionInfo.scode }; }
void IActiveScriptSite.OnEnterScript() { _lastException = null; }