- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个旧的VB6应用程序,需要对Web服务进行异步调用。该Web服务提供了一种search
方法,该方法允许最终用户查询中央数据库并从应用程序内部查看结果。我正在使用MSXML2.XMLHTTP
发出请求,并编写了一个SearchWebService
类,该类封装了Web服务调用和代码以异步处理响应。
当前,SearchWebService
向调用者引发两个事件之一:SearchCompleted
和SearchFailed
。如果调用成功完成,则会引发SearchCompleted
事件,该事件包含搜索结果,该事件的参数中包含该结果。当检测到任何类型的故障时,就会引发SearchFailed
,可能是格式不正确的URL(这是可能的,因为该URL是用户可配置的),低级网络错误(例如“找不到主机”)到HTTP错误,例如内部服务器错误。它将错误消息字符串返回给最终用户(如果存在,则从Web服务响应正文中提取;如果响应没有正文,则从HTTP状态代码文本中提取;如果出现网络错误,则从网络错误代码中进行翻译)发生)。
由于各种安全要求,调用应用程序不会直接访问Web服务,而是通过在客户站点上运行的代理Web服务器访问它,而代理Web服务器又通过VPN访问实际的Web服务。但是,SearchWebService
不知道调用应用程序正在通过代理访问Web服务:它只是被提供一个URL,并被告知发出请求。代理的存在是应用程序级别的要求。
问题是,从最终用户的 Angular 来看, call 应用程序必须能够区分低级网络错误和Web服务中的HTTP错误,并区分代理错误和远程Web服务器错误。例如,应用程序需要知道请求是否由于代理服务器关闭或代理访问的远程Web服务关闭而失败。在每种情况下,都需要向最终用户显示特定于应用程序的消息,例如“搜索Web服务代理服务器似乎已关闭。可能需要重新启动代理服务器”与“代理当前正在运行,但是远程Web服务器似乎不可用。请与(远程Web服务器负责人的姓名)联系。”我可以直接在SearchWebService
类中处理此问题,但是从此类泛型类生成这些特定于应用程序的错误消息似乎是错误的(并且该类可能用于不需要代理的环境中,而错误消息不会不再有意义)。
这种区别对于故障排除非常重要:代理服务器问题通常可以由客户解决,但是远程Web服务器错误必须由第三方处理。
我在想一种解决此问题的方法是让SearchWebService
类检测不同类型的错误并在每种情况下引发不同的事件。例如,除了一个SearchFailed
事件外,我还可以使用NetworkError
事件来处理低级网络错误(这表明访问代理服务器有问题),而使用ConfigurationError
事件来处理SearchWebService
类上的无效属性(例如不正确地传递)格式的URL),以及用于在远程Web服务器上发生的错误的ServiceError
(这意味着代理可以正常工作,但远程服务器返回了错误)。
现在,我考虑了一下,还有另外一种错误情况:代理服务器可能正在正常运行,但是远程Web服务器已关闭,或者代理服务器配置错误。
使用多个错误事件对不同类别的错误进行分类的方法是否是对此问题的合理解决方案?对于最后一种情况(代理正在运行,但无法访问远程服务器),我猜测我可能必须设置代理以返回特定的HTTP错误代码,以便客户端可以检测到这种情况(即,比500个响应)。
最初,我保留了一个SearchFailed
事件,并只是向该事件添加了一个额外的errorCode
参数,但这很快就变得困惑了,特别是在没有逻辑错误代码可使用的情况下(例如,如果VB6引发“真实”错误) ,即如果未注册XMLHTTP类)。
最佳答案
我认为我在Java异常中使用过的一些想法可能适用于此。
拥有大量不同的异常会变得很困惑,但是我们需要向用户提供足够的细节,因此我们不想丢失信息。
因此,我有少量的特定异常,我想它们与您的事件相对应:
BaseException {
String ErrorText; // the error text itself
// OR if you want to allow for internationaliation
int ErrorCode; // my application specific code, corresponds to text held by the UI
String[] params; // specific parameters to be substitued in the error text
// CUTSOMER and ORDER in my example above
int SystemErrorCode; // If you have an underlying error code it goes here
String SystemErrorText; // any further diagnoistic you might need to give to
// the user so that they can report the problem to the
// help desk.
// OR instead of the text (this is something I've seen done)
int SystemErrorTag; // A unique id for this particular error problem.
// This server systems will label their message in the
// server logs. Users just tell the help desk this number
// they don't need to read detailed server error text.
}
关于web-services - API设计: How should distinct classes of errors be handled from an asynchronous XMLHTTP call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338873/
我有一个包含电子邮件、IP、州、城市、时间戳、ID 列的表 我需要按州分组计算电子邮件和 IP 的不同位置 所以当我运行 MYSQL 查询时, select State, City ,count(di
我试过 select distinct ID from DB.TABLE; 它返回所有记录中的唯一 ID。 select distinct * from DB.TABLE; 它将通过比较所有列
我正在尝试在 Postgresql 中编写一个查询,该查询提取一组有序数据并按不同的字段对其进行过滤。我还需要从同一表行中提取其他几个字段,但需要将它们排除在不同的评估之外。示例: SELECT
我有一个使用以下语句创建的 Postgres 表。该表由另一个服务的数据转储填充。 CREATE TABLE data_table ( date date DEFAULT NULL,
我在一个名为 products 的表中有 4 列 id|p_name| p_img | 1 | Xs | xsmax.png | 2 | Xs | xr.png |
当它的状态仅为"is"时,我想从“num”中选择不同的值,而不是立即包括“否”? 表: +--------+-----+--------+ | id | num | status | +---
全部!今天我有一个棘手的问题要给你,我想使用 select DISTINCT 语句来选择一个需要不同的行,但也在同一个语句中(或者我尝试过的方式?)一个没有的行't/不能区分。我想要的结果是每个类名中
我有一个正在使用 Distinct() 的 linq 查询。如果我只是调用 Distinct() 而没有转换为列表,那么它不会返回不同的列表 - 它仍然包含重复项。 但是,如果我转换为 List 并然
说到性能,我应该使用 .ToList().Distinct() 还是 .Distinct().ToList() ? 两种扩展方法是否生成相同的 SQL 查询? 看起来第二种方法应该表现更好,但这是真的
如何在不支持 SQL Server 2008R2 的 SQL 实现中重写包含标准 IS DISTINCT FROM 和 IS NOT DISTINCT FROM 运算符的表达式? 最佳答案 IS DI
有一张 table (在 HIVE) 示例 - meanalytics.key2_master_ids 该表有 6 列(cmpgn_id、offr_id、exec_id、creatv_id、cmpl_
SELECT * FROM `amc_info` WHERE department =' ( SELECT DISTINCT department ) into outfile = 'Differe
如何在Elasticsearch中计算“不同的平均值”?我有一些这样的非规范化数据: { "record_id" : "100", "cost" : 42 } { "record_id" : "200
关注这个question我有... ID SKU PRODUCT ======================= 1 FOO-23 Orange 2 BAR
我有这个 mysql 查询: SELECT DISTINCT post.postId,hash,previewUrl,lastRetrieved FROM post INNER JOIN (tag a
http://sqlfiddle.com/#!2/37dd94/17 如果我执行 SELECT DISTINCT,我得到的结果与只执行 SELECT 的结果相同。 在查询结果中,您将看到两个包含 Di
我有一列包含空条目,例如此列中的可能值为 None, 1, 2, 3 当我使用 session.query(func.count(distinct(Entry.col))).scalar() 计算列中
这是否可能从表列中选择不同的行并计算单个查询中每个不同字段的重复行 $sql = "SELECT DISTINCT location and COUNT(DISTINCT location)
我在 MySQL 数据库中有一个包含 1100 万行的表。其中一列是个人身份证号码。人们在表中被多次列出,我想知道有多少个唯一的个人 ID 号码。然后创建一个包含这些唯一数字的表格。当我计算列中不同的
我刚刚注意到我的 Informix SQL 列(在同一个表中)的某些 上有些奇怪。当我执行此查询时 SELECT DISTINCT colName FROM myTable 例如,我得到 40 行。但
我是一名优秀的程序员,十分优秀!