private static ErrorHandler CreateHandler(IDataService service, AstoriaRequestMessage requestMessage, Exception exception, Version defaultResponseVersion) { Debug.Assert(service != null, "service != null"); Debug.Assert(service.Configuration != null, "service.Configuration != null"); string acceptableContentTypes = null; string requestAcceptCharsetHeader = null; Version responseVersion = defaultResponseVersion; if (requestMessage != null) { acceptableContentTypes = requestMessage.GetAcceptableContentTypes(); requestAcceptCharsetHeader = requestMessage.GetRequestAcceptCharsetHeader(); try { Version maxProtocolVersion = service.Configuration.DataServiceBehavior.MaxProtocolVersion.ToVersion(); requestMessage.InitializeRequestVersionHeaders(maxProtocolVersion); responseVersion = VersionUtil.GetResponseVersionForError(requestMessage.GetAcceptableContentTypes(), requestMessage.RequestMaxVersion, maxProtocolVersion); } catch (Exception e) { if (!CommonUtil.IsCatchableExceptionType(e)) { throw; } // Ignore exceptions as we should use the default response version. } } return(new ErrorHandler(exception, service.Configuration.UseVerboseErrors, responseVersion, acceptableContentTypes, requestAcceptCharsetHeader)); }