精华内容
下载资源
问答
  • 2019-06-22 18:06:46

    异常使用和处理建议

    使用异常代替错误码
    这曾经是个社区争论不休的话题,多数人是选择异常替代错误码的。反对者中,有人认为不应该使用异常去控制程序流程,也有些人认为只有"数据库连不上"这种系统异常才算异常,还有些人认为异常会有额外的性能开销…
    使用异常代替错误码,可以使得代码更清晰,可读性更好,更符合面向对象。况且有些方法压根就是void的无返回值的。至于性能开销这个通常可以忽略。
    当然,这个建议并不是在所有地方都适合,在业务层中比较合适

    不要通过异常捕获来代替基本判断
    比如,最常见的NPE的防范,判断非空这种操作是必须的,不能试图在外面套个try catch(NullPoint…)来替代基本判断。
    也可以使用Java8中的Optional避免NPE

    使用自定义异常

    • 使用自定义的异常并包含业务含义,而不要直接抛出new RuntimeException()之类的

    引发异常
    何时主动引发异常这是一个让很多人疑惑的问题。那么我举几个简单的例子:

    • 在更新用户信息的业务方法中发现该用户根本就不存在,在一个注册的方法中发现用户已经存在了…那么建议直接向上层抛出异常
    • 对于方法参数做校验发现不符合,是直接引发异常还是直接return(或者return默认值)? 这个要看实际场景要求,不能一概而论,具体:
      1.业务上不想因为这里的个别参数问题影响到外层的主流程,可以在该方法内记录下警告日志然后直接return,外层直接忽略继续执行主流程
      2.如果对业务主流程是有直接影响的,希望内部方法提前终止并通知到外层,那么建议直接抛出自定义异常,风格统一(使用自定义异常代替错误码)。当然,这种情况返回错误码或者返回个默认值(NULL)也不能说就是错的,只是可读性并不是特别好,容易理解出错。还有中特殊情况,内部方法定义为void类型,即便return了外层其实也不感知的,那这种肯定是要引发异常的
      3.对于可控范围内的输入输出,使用返回或者抛异常都可以。对于不可控的,比如:恶意的输入,或者继续运行可能引发资源泄露等不可恢复的严重问题…都应该直接抛出异常及时终止程序运行

    捕获异常

    • 不要不加区分的统一捕获Excetion甚至Throwable,应该区分异常类型,仅仅捕获处理你关注的异常
    • 千万不要捕获了异常但是什么都不做,或者printStackTrace,最起码也应该打印日志记录异常堆栈信息
    • 如果底层的异常上下文信息对上层来讲毫无意义,那么考虑捕获处理异常。例如:底层对用户输入的内容做类型转换时发生了异常,应该捕获『类型转换异常』并向上抛出『参数异常』
    • 如果需要包装额外的信息传递给上层,可以考虑捕获异常并引发新异常
    • catch代码块中的代码应该尽可能简单、稳定,避免出错
    • 不要不分青红皂白给整个方法或者大段代码加上try catch,一来这样本来就不对,而且可读性不好,也影响性能。这是我见过的很多新手『害怕程序出错』的惯性做法
    • 避免异常捕获嵌套,或者在循环内使用异常
    • 如果有使用事务,在发生异常时做事务回滚

    finally中不要包含return
    finally中的return返回后方法就结束执行了,try中的return就执行不到

    finally中释放资源
    在finally中关闭连接、关闭流等避免资源泄露,也可以使用try-with-resources

    一些实践

    • 在restful API中,涉及到跨语言跨平台问题,尽量不要直接往外部抛出异常,建议使用错误码+错误消息替代,不要和http的状态码混淆使用。除了接口自身考虑异常处理外,应该要有全局异常处理器来做兜底
    • 在rpc接口中,虽然多数情况是相同语言的而且多数rpc框架也可以往外抛出并传递异常堆栈信息(前提是特定的异常在消费者、服务提供者都有定义,否则无法解析)。但是也不建议直接抛出异常,rpc接口响应结果推荐使用统一包装的结果类,返回自定义错误码和错误信息,同时也应该有全局的异常处理器来做兜底
    • 在最外层面向用户的系统中,应该捕获处理异常,并转换成友好的提示信息,不要把异常信息甚至堆栈直接丢给用户
    • 日志中要打印完整的异常堆栈信息,否则排查问题困难。请检查你使用的日志框架相关方法,到底是打印出来的异常完整信息还是只打印的"异常类的全限定名"。包括堆栈信息,包括上下文信息,便于排查
    • 在web层、api层都有全局的统一异常处理来兜底,在spring boot/mvc中可以考虑使用@ControllerAdvice、@ExceptionHandler来实现全局异常处理
    更多相关内容
  • HTTP错误码必知必会

    2019-03-18 11:24:28
    详细的介绍了HTTP错误码的相关含义以及解决方法
  • 以下是对Java中自定义错误类的示例代码进行了介绍。需要的朋友可以过来参考下
  • HTTP错误大全,HTTP错误代码。 HTTP错误大全,HTTP错误代码。 HTTP错误大全,HTTP错误代码
  • 大纲如下:1、抓取异常是什么?百度抓取异常又是什么?2、百度抓取异常的原因有哪些?3、网站抓取异常的原因有哪些?4、百度抓取异常对网站有什么影响?5、网站出现抓取异常的解决方法抓取异常是什么?百度抓取异常...

    d05cea36bfaa45bd678677f9636851ce.png

    大纲如下: 1、抓取异常是什么?百度抓取异常又是什么? 2、百度抓取异常的原因有哪些? 3、网站抓取异常的原因有哪些? 4、百度抓取异常对网站有什么影响? 5、网站出现抓取异常的解决方法 抓取异常是什么?百度抓取异常又是什么? 所谓抓取异常,就是指搜索引擎蜘蛛无法抓取网站页面,网站出现的抓取异常就是抓取异常,具体原因是什么下面会讲到。 3204bcfdd6c361e14c4d854b4d104210.png 百度抓取异常是什么?简单理解就是百度的蜘蛛(baiduspider)无法正常抓取,就是百度抓取异常。如上图,来源网上。9月3号,百度蜘蛛来抓取时,抓取时连接超时2次。 百度抓取异常的原因有哪些? 百度抓取异常的原原因主要分两大类,一是网站异常,二是链接异常。在哪里看呢,在百度搜索资源平台(https://ziyuan.baidu.com)你添加后数据统计—抓取异常那里,如下图。 3cb1c10d92498f1ad833e2cd9a07f4a7.png 网站异常原因:

    1、dns异常

    当百度蜘蛛(Baiduspider)无法解析您网站的IP时,会出现DNS异常。可能是您的网站IP地址错误,或者域名服务商把Baiduspider封禁了。

    可以用WHOIS或者host查询自己网站IP地址是否正确而且可以解析,如果不正确或无法解析,与域名注册商联系,更新网站IP地址。

    2、连接超时

    抓取请求连接超时,可能原因是:服务器过载或网络不稳定。

    3、抓取超时

    抓取请求连接建立后,下载页面速度过慢,导致超时。可能原因服务器过载,带宽不足。

    4、连接错误

    无法连接或者连接建立后对方服务器拒绝。

    链接异常原因:

    869d6117ea9e5096b6397f728dcd19bf.png

    1、访问被拒绝

    爬虫发起抓取,httpcode返回码是403。

    2、找不到页面

    爬虫发起抓取,httpcode返回码是404。

    3、服务器错误

    爬虫发起抓取,httpcode返回码是5XX

    4、其他错误

    爬虫发起抓取,httpcode返回码是4XX,不包括403和404。

    关于上面提到的403、404、4XX、5XX等,其实都是网站HTTP状态码,如果不清楚同学,可以看这一篇:SEO入门学习之搜索引擎(百度)蜘蛛与网站HTTP状态码,再学习一下。

    网站抓取异常的原因有哪些? 网站抓取异常的原因主要有以下五个方面: 1、服务器异常 服务器连接异常最大的可能是网站服务器过大,超负荷运转,通过检查浏览器输入你的域名是否正常访问。服务器异常会导致蜘蛛无法连接网站服务器,导致出现抓取失败。 2、域名过期 域名过期网站肯定不能访问,域名解析就会失效了。如果存在这类情况,你可以与你域名注册商联系解决,看是否被抢注,还是可以续费回来。 3、网络运营商异常 电信和联通这两种都是属于网络运营商,蜘蛛无法访问的网站。 如果是因为电信或联通网络运营商出现问题,与网络服务运营商联系或者购买CDN服务。 3、robots.txt文件设置问题 robots.txt的功效主要是一些不重要的文件屏蔽掉告诉搜索引擎这些些页面可以不抓取,但也可能会存在把重要的页面也给屏蔽了,可以检查下robots文件设置。 关于ROBOTS.TXT,可以看我之前写的这篇里面有写到: 白杨SEO:新人学习SEO常遇到的15个SEO术语,建议收藏 4、死链接因素 原本正常的链接后来失效了就是死链接,死链接发送请求时,服务器返回404错误页面。 死链的处理方案可以通过百度站长平台提交死链文件。 bd416b594fddd178a49696bdbcf0f3b5.png 5、网站被挂马 网站被挂马,要查询挂马文件在哪里并删除。恢复网站,更改登录名和密码,安全密保要从新设置,防止下次被挂马。如果找不到,建议直接更换整个建站程序,换一个程序。 百度抓取异常对网站有什么影响? 如果网站上存在大量内容蜘蛛无法正常抓取,百度搜索引擎会认为网站给用户的体验上有缺陷( 访问网站的用户没有得到想要的东西,用户的体验感就会下降 )降低对网站的评价。 而且,网站在抓取、索引、权重上都会受到一定程度的负面影响,更严重的会直接影响到网站从百度获取的流量。 所以,百度网站抓取异常是非常严重的,一旦发现,尽量解决。 如何解决呢,继续往下看。 网站出现抓取异常的解决方法 1、出现5XX类型错误情况 出现这些情况,并不是网站本身向搜索引擎说自己5XX问题,有时打开还是正常的,那么站长后台的为什么会显示这个错误呢?

    fa0609c49934c2bd1e3848819b50f59a.png

    如果出现此类问题百分百是因为你的网站服务器造成,而对于某一个状态码的含义,比如503,直接交给技术来进行解决。如果技术还是解决不了,那么建议更换一家服务器。 2、抓取出现DNS错误情况 很多SEO新人发现网站打不开了就会马上找网站服务商,但是吧,域名DNS服务器有可能也会出现问题。当网站出现问题后,比如打不开,第一时间应当确定到底是什么问题? 如果是域名的DNS问题,那么白杨SEO建议更换DSN。因为有些DSN出现了这个问题,它后面还有可能出现。 如果要换,就要换大一点的DNS服务商,比如阿里云收购的万网就不错,毕竟大公司,稳定性还可以的。 3、出现抓取超时问题 现在做SEO排名已经到了用户为王时代,用户如果不能在第一时间打开你网站的页面,那么就会跳到其他网站上去。而搜索引擎蜘蛛呢,一样的。如果无法第一时间抓取,就会出现抓取超时问题。 上面说过,这个抓取超时,大多都是因为带宽不足,或者是网站页面太大而引发的所以解决方法建议如下:
    (1)、在不影响图片质量的情况下,对大的图片进行压缩哈; (2)、减少比如网站的JS脚本文件类型的使用,或者把一些JS进行合并;跟技术说清楚。 (3)、整个网站页面长度进行控制,尤其是你的网站首页。很多人网站首页做了十来屏,一般用户最多下拉三到五屏。越长,整个加载就会越久。 (4)、网页的内链数量,一般一个页面互相之间的内链数量建议不要超过500条哦,其实越多,蜘蛛都会去往下爬取,小网站基本没这个问题。 总之,百度抓取网站异常这个问题,建议建站时找成熟的程序建站,同时,找像阿里云这样的大的服务商。不要总想着省钱,淘宝随便几百建个站,找个不知名服务商,其实这样得不尝失的。 这篇比较简单,其实做SEO,官方的站长后台功能一定要熟练使用。你不懂技术可以,但一定要知道原理。不然,出问题,你都不知道找谁。关于更多,可以看相关推荐文章。

    END

    编辑整理:王小贱 公众号:输赢(lizhishare)

    更多的知识分享,欢迎关注微信公众号:外贸加油站

    资深SEO揭秘SEO到底是个啥?

    SEO大全|让你网站快速被蜘蛛抓取的十三个方法

    三种SEO优化作弊行为,千万不要模仿!

    技巧|9个影响你网站的隐藏SEO问题

    天天发外链做百度/谷歌SEO,为什么长期没效果呢?

    网站建设要注意哪些SEO推广细节?一文读懂SEO优化

    来源自网络;如涉及版权请告知,对文中观点保持中立,仅供参考、交流。(侵删)

    白杨SEO简介: 白杨SEO,专注SEO研究十年,SEO实战派。个人微信:baiyang2047 对互联网精准引流有深入研究。前杰恩西运营总监(COO),现自由职业。 白杨SEO付费群 199元/年 。如需加好友,验证:公众号;如需进群,验证:进群。如果想加入白杨SEO付费星球学习提问,回复关键词“优惠券”即可,数量有限! b6442fe1ee11e3855c5c8a0a40c605a5.png
    展开全文
  • Modbus功能码/异常功能码/错误码

    千次阅读 2019-12-09 17:14:03
    由于modbus协议是请求/应答通信协议,其其中功能主要用于表述该数据报文执行的功能,当服务器对客户机进行响应时,它使用功能域来指示正常响应(无差错)或者异常响应(即出现某种差错),其中的modbus协议的...

    Modbus协议主要构成是地址码/标识码,功能码,寄存器地址,数据报文等内容。由于modbus协议是请求/应答通信协议,其其中功能码主要用于表述该数据报文执行的功能,当服务器对客户机进行响应时,它使用功能码域来指示正常响应(无差错)或者异常响应(即出现某种差错),其中的modbus协议的功能码众多
    在这里插入图片描述
    其中物理离散量输入和输入寄存器只能有I/O系统提供的数据类型,即只能是由I/O系统改变离散量输入和输入寄存器的数值,而上位机程序不能改变的数据类型,在数据读写上表现为只读,而内部比特或者物理线圈和内部寄存器或物理输出寄存器(保持寄存器)则是上位机应用程序可以改变的数据类型,在数据读写上表现为可读可写。
    在这里插入图片描述
    我们以Modbus RTU协议为例,地址码为0x01,写操作0x10,寄存器地址为0x018E,CRC校验。如寄存器可读写的话,返回正常,如寄存器只读,返回异常。

    下发指令:01 10 01 8E 00 01 02 00 00 69 BE(向寄存器0x018E写入一个数值为0的数据)

    正确回应指令:01 10 01 8E 00 01 60 1E(向寄存器地址0x018E写操作一个寄存器)

    错误回应指令:01 90 01 8D C0(写操作非法功能,可能是向输入寄存器写数据)

    展开全文
  • SpringBoot 使用异常自定义错误码

    千次阅读 2018-07-11 16:39:16
     基于此,我们需要在 HTTP 状态码基础上拓展业务错误码; 本文介绍一种基于 SpringBoot 和 Exception 的实现方案。二、实验步骤2.1 生成 SpringBoot 基础项目 SpringBoot 官方提供了初始模...
  • C#带错误代码的自定义异常

    千次阅读 2020-02-19 14:35:05
    C#实现带有错误代码的自定义异常
  • java异常错误码定义规范及其使用

    万次阅读 2019-07-29 18:45:00
    前言 本随笔是最近进行实际项目开发时总结的一些经验,可供需要的伙伴借鉴。 如有不足之处欢迎评论指正。 ...使用java提供服务的后端系统,使用者(可能是web...捕获到一个"未知"异常时,我该将其抛出去还是就地打...
  • 问题描述:【搜狗输入法安装包文件有异常,错误码:2,现在终止安装】 搜狗输入法是一款比较好用的输入法,用户很多, (若不想忍受它的广告,可以使用 【火绒】 或者 【wise AD cleaner(可以设置开机自启)】 ,火绒...
  • 再写一个异常管理类ExceptionManager,用来抛出自定义的异常。 然后使用Spring提供的注解@RestControllerAdvice或者@ControllerAdvice写一个统一异常处理的类,在这个类中写一个带有@ExceptionHandler(Ex...
  • android Ble 蓝牙4.0 GATT 错误代码对照 133 129
  • 在网站运行中,我们经常会碰到各种安装提示错误,下面给大家汇总了一些常见HTTP请求错误码都是什么意思: 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解: 1xx...
  • 在生产系统中的数据库服务突然在下午崩溃,起初只是以为远程连接失败导致的服务异常。结果在服务器上检查之后发现整个服务都瘫痪了,并且无法进行正常...于是通过远程管理工具Navicat进行连接发现返回了错误代码为2...
  • 常见错误码

    千次阅读 2021-03-19 13:55:35
    error code(错误代码)=0是操作成功完成。 error code(错误代码)=1是功能错误。 error code(错误代码)=2是系统找不到指定的文件。 error code(错误代码)=3是系统找不到指定的路径。 error code(错误代码...
  • HTTP错误代码大全,http网站状态各代表了什么? 响应由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。响应分五种类型,由它们的第一位数字表示:1.1xx:信息,请求收到,继续处理2.2xx:...
  • 错误代码: 1337 Variable or condition declaration after cursor or handler declaration 错误的写法: DROP PROCEDURE IF EXISTS `proc_statistical` ; DELIMITER ;; CREATE DEFINER = `root` @`localhost`
  • win10系统网卡驱动异常错误代码56

    千次阅读 2022-04-22 11:09:39
    网卡驱动异常错误代码56,下载ccleaner清理注册表信息,重启
  • 返回错误码,可以让API解析错误码,做某些操作,但是不利于定位服务端代码错误。 应用场景: 1)参数校验 ,校验参数必须存在,这种直接抛出异常就可以了,因为不需要返回其他数据,参数校验通过了, 根据订单ID ...
  • Http协议常见错误码说明解析

    千次阅读 2021-08-10 09:23:13
    如何安装错误码找到问题的所在,常见状态代码说明:1、400 Bad Request:客户端请求有语法错误,不能被服务器所理解2、401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用3、403 ...
  • Java异常封装(自己定义错误码和描述,附源码)

    万次阅读 多人点赞 2016-01-29 22:30:54
    当然真正工作里面主动抛出的异常都是经过分装过的,自己可以定义错误码异常描述。下面小宝鸽就为大家介绍一个Java异常简单封装的例子。在给出异常分装例子之前,需要给大家普及Java里面的checked异常和unchecked...
  • python的错误异常

    千次阅读 2020-11-29 19:12:10
    python错误和异常错误错误分为语法错误和逻辑错误语法错误>>> ifFile "", line 1if^SyntaxError: invalid syntax程序执行过程中,python解释器会检测你的程序是否存在语法错误,如果程序出错python解释器会指出出错...
  • 因此,我正在使用Dailymotion API上传视频,并使用从GitHub获得的代码,它可以正常工作,但是在4个视频之后,出现了以下异常:{“远程服务器返回错误:(403)禁止。”}我在PublishVideo方法中遇到错误var response = ...
  • 建议58:用抛出异常代替返回错误代码 CLR异常机制的优点: 正常控制流会被立即中止,无效值或状态不会在系统中继续传播。提供了统一的处理错误的方法。提供了在构造函数、操作符重载及属性中报告异常的遍历...
  • 系统错误码定义规则

    千次阅读 2018-08-01 14:11:39
    一、定义错误异常类 /** * @author yunpeng.zhao * @version $Id TestException.java, v 0.1 2018-08-01 下午1:51 yunpeng.zhao Exp $$ */ public class TestException extends RuntimeException{ private ...
  • HTTP 错误 400400 请求出错由于语法格式有误,服务器无法理解此请求...HTTP 错误 401401.1 未授权:登录失败此错误表明传输给服务器的证书与登录服务器所需的证书不匹配。请与 Web 服务器的管理员联系,以确认您是...
  • SpringBoot进阶之使用异常替代返回错误码(拦截异常并统一处理)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 959,950
精华内容 383,980
关键字:

下载异常错误码403