> 信息中心 >

.NET异常处理和状态码问题,大家是怎么处理的

来源:互联网 编辑:杨美丽

有网友碰到过这样的问题:.NET异常处理和状态码问题,大家是怎么处理的,问题详细内容为:

起因是我想写一个RESTful风格的接口,比如添加一个学生实体,其中有一个字段Sex是int型,合法数据有1,和2,分别代表男和女。

现在,我想验证用户传过来的参数是否合法,如果不是1或者2,就抛出异常:

...... if(s.Sex!=1 | s.Sex!=2) { throw new ArgumentException("sex参数异常"); } ......

但是我发现,这样throw出去的http状态码是200,和接口正常返回时的状态码相同,没法区分。

想请问下大家:

1. 是不是所有这样throw出来的exception的状态码都是200?

2. 有没有办法自己定义状态码?

3. 如果自定义自己的异常类(继承System.Exception),是否有必要?

4. 大家在写RESTful风格的接口时,是怎么处理异常的?

 

谢谢

,我搜你通过互联网收集了相关的一些解决方案,希望对有过相同或者相似问题的网友提供帮助,具体如下:

解决方案1:
怎么会是 200 ?是不是被你在那个地方 catch 了? 奖励园豆:5
============================================
我写了一个全局异常处理的中间件,在中间件里catch了: /// <summary> /// 全局异常过滤 /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task Invoke(HttpContext context) { int statusCode; string msg = ""; try { await _next(context); } catch (Exception ex) //发生异常 { statusCode = context.Response.StatusCode; //if (ex is ArgumentException) //如果是参数异常,将状态码赋值为400 //{ //context.Response.StatusCode = 400; //statusCode = 400; //} LogHelper.SetLog(LogLevel.Error, ex); await HandleExceptionAsync(context, statusCode, ex.Message); } finally { statusCode = context.Response.StatusCode; switch (statusCode) { case 401: msg = "未授权"; break; case 404: msg = "未找到服务"; break; case 502: msg = "请求错误"; break; default: if (statusCode != 200) { msg = "未知错误"; } break; } if (!string.IsNullOrWhiteSpace(msg)) { await HandleExceptionAsync(context, statusCode, msg); } } } /// <summary> /// 返回异常消息 /// </summary> /// <param name="context"></param> /// <param name="statusCode"></param> /// <param name="msg"></param> /// <returns></returns> private static Task HandleExceptionAsync(HttpContext context, int statusCode, string msg) { var data = new { Code = statusCode.ToString(), Success = false, Msg = msg }; context.Response.ContentType = "application/json;charset=utf-8"; return context.Response.WriteAsync(JsonConvert.SerializeObject(data)); } 是因为这个地方catch了才变成200的吗?
============================================
@在7楼: catch中处理完毕后需要把异常继续扔出去 try { await _next(context); } catch (Exception ex) { //.. throw ex; }
============================================
@dudu:
我想用这个全局异常处理中间件把异常处理了之后返回出去,比如如果是没有认证,就返401状态码和相应的response body(body的内容在第二个函数定义了)。
如果在catch里throw出去,就直接throw给前端了,不管什么异常,最后状态码都变500了。
============================================
@在7楼: 根据状态码判断是否出错,然后从响应内容中获取具体的错误信息
============================================
@在7楼: 这里只需要将状态码设置为500,不需要继续抛异常
解决方案2:
可以直接return badrequest啊
解决方案3:
controller 继承ApiController 的话, 1.如果是core api 方法返回类型IActionResult, || 普通.net 返回类型IHttpActionResult
2.return BadRequest("消息提示"); 没问题的就返回 return Ok(data)

在服务器上处理请求时出现未知错误。服务器返回的...

答:百度找一下。

停止 [错误: 服务器返回异常的状态码] 怎么解决

答:一般的“非法操作”有两个选项:“关闭”和“详细资料”。可是“详细资料”里面的内容大多数人都看不明白,只好草草的关闭了。现在不用怕了,我来给大家讲解一下非法作的每个详细资料的具体含义。 1、停止错误编号:0x0000000A 说明文字:IRQL-NOT-LESS-...

出错代码502,是指什么,怎样解决?

答:前端页面显示502就表示:后端服务器无响应或者由于某一种错误挂了或者其它通讯协议等等错误导致的。 比如:你向小明问小红的年龄:小红挂了,小红由于太忙没时间搭理,小明转达话的时候说的小红没有听懂等等,你得到的就是502 下面是502的百度百...

网站出现503错误的哪些解决办法

答:503是一种HTTP状态码。英文名503 Service Unavailable是一种网页状态出错码。是网页程序没有相关的结果后返回的一种状态,要解决此问题,按照下列步骤操作: 1、验证是否已为虚拟服务器配置了应用程序池。默认的应用程序池是MSSharePointPortalA...

Sys.WebForms.PageRequestManagerServerErrorExcep...

答:一般的原因都是页面存在潜在的危险字符 在 页首加入 ValidateRequest="false" 如下: 其他解决办法: 在Web.Config Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the serve...

抱歉,您的店铺状态异常,请至PC端处理 淘宝显示这...

答:有没有具体的截图呢?如果有的话截图看一下最好的,当然也能猜到是什么情况,这个意思其实也很清楚,就是让你上电脑,去进入卖家中心体检中心,看看是不是你长时间连续六周没有销售产品,然后就是被暂时的释放了,所以说,你现在再点开,就成了...

http 错误502是什么意思 并求解决方法

答:错误代码:502 - Bad Gateway 产生原因 服务器(不一定是Web服务器)是作为网关或代理,以满足客户的要求(如Web浏览器或我们的CheckUpDown机器人)来访问所请求的URL 。此服务器收到无效响应从上游服务器访问履行它的要求。 含义 这通常并不意...

手机出现服务器无效响应。状态码:400要怎么解决

答:若手机提示无响应,建议: 1.将手机关机重启。 2.设定-(一般/更多)-应用程序管理器-全部-菜单键-重置应用程序偏好。 3.若依然有此提示,建议卸载手机无响应之前操作的第三方软件。 4.查看手机是否有固件/系统推送通知,若有,请将手机升级到最...

linuxcentos6.8 负载均衡解析apache 出现 400状态...

答:当试图用错误文件处理请求时 遇到404错误-没有找到每一个互联网用户都会在某个地方碰到“404——无法找到文件”的错误页面。或许在非正式微软版本上会显示:“该页无法显示。”或者浏览器显示错误为:“页面错误。”并非每个网站都以相同的方式公布错误...

关于seo的http状态码你了解多少?

答:夫唯老师讲过http状态码分为以下: 一、200 状态码:成功 2××:成功处理了请求的状态码。 1、200 :服务器已成功处理了请求并提供了请求的网页。 2、204: 服务器成功处理了请求,但没有返回任何内容。 二、300状态码:重定向3××:每次请求中使...

状态码CDN000001怎么处理好

1、机顶盒软件某个应用程序占用大量内存,导致机顶盒报错提示。 2、机顶盒条件接收(CA)模块对节目授权的一些异常提示。 3、当传输信号或用户误操作时,机顶盒作出相应的...

支付失败!您的账户余额不足或卡片状态异常。错误码:IST.51

你去问一下客服就可以了呀!你今天在试试看!

财付通 您的账号处于异常状态,系统禁止交易 错误代码:50020...

你好,可能是异地登录操作,或者交易额巨大,被检测到异常,为防止账号有被盗的可能,因此系统禁止交易。如有疑问尽可追问,,谢谢

梦想世界处于异常登录情况怎么输入确认码 我没搞那个东东啊

输入貌似不能了,你可以带你的帮主,结义金兰,夫妻,去集市安全大使(天界交易人左上)那解除临时异常状态.

手机号码出现异常,开不得腾讯业务,怎么处理?

是检测到你的号码开通业务异常,对你的手机的信誉度会降低,但当你拨打13800138000时,移动系统会默认你将进行话费充值(当然充值成功与否是后话了,这里不考虑。),也就是...

远程抄报 数据状态有数据 处理状态已处理 报税结果处理失败 错...

是上海的吗? 到www.AISINO.SH.CN上下载域名更新补丁吧。

支付失败!您的卡片状态异常。错误码:IST.41

你把所有网页关闭 重启电脑 然后再操作一次 试试 卡上的钱 不能都转哦 需要留几块 呵呵 试试吧 再不行的话 明天打淘宝客服问问

您的账号处于异常状态,系统禁止交易 错误代码:89602309 ----...

中毒了

如何理解HTTP响应的状态码

处理的范围。 一般的服务器都会设置HTTP请求消息体的最大长度,当然这是一种阻挡... 这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服...

spring mvc 异常如何处理

一、使用@ExceptionHandler进行处理 1.创建异常基类,使用@ExceptionHandler声明异常处理 BusinessException和SystemException为自定义异常类,代码如下: package com.tw...


请注意,本站信息均收集自互联网,相关信息仅供参考,医疗等重要信息请以正规途径为最终意见,本站不承担任何责任!

www.wosoni.com false 互联网 http://www.wosoni.com/blogcnk/mv/clkdje.html report 7151 解决方案1:怎么会是 200 ?是不是被你在那个地方 catch 了?奖励园豆:5============================================我写了一个全局异常处理的中间件,在中间件里catch了:/// <summary>/// 全局异常过滤/// </summary>/// <param name="context"></param>/// <returns>&l

热门图片