当前位置: 首页 > news >正文

网网站制作企业网站模板下载需谨慎

网网站制作,企业网站模板下载需谨慎,seo优化关键词挖掘,学生个人网站布局java 异常分类 Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 这两种异常有很大的区别…

java 异常分类

在这里插入图片描述

  • Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。
  • 其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 这两种异常有很大的区别,也称之为非检查异常(Unchecked Exception)和检查异常(Checked Exception),其中Error类及其子类也是非检查异常。

检查异常和非检查异常

  • 检查异常也称为“编译时异常”,编译器在编译期间检查的那些异常。由于编译器“检查”这些异常以确保它们得到处理,因此称为“检查异常”。如果抛出检查异常,那么编译器会报错,需要开发人员手动处理该异常,要么捕获,要么重新抛出。除了RuntimeException之外,所有直接继承 Exception 的异常都是检查异常。
  • 非检查异常:也称为“运行时异常”,编译器不会检查运行时异常,在抛出运行时异常时编译器不会报错,当运行程序的时候才可能抛出该异常。Error及其子类和RuntimeException 及其子类都是非检查异常。

异常处理分为三个阶段:捕获->传递->处理。try……catch的作用是捕获异常,throw的作用将异常传递给合适的处理程序。捕获、传递、处理,三个阶段,任何一个阶段处理不当,都会影响到整个系统。下面分别介绍一下常见的异常处理不规范案例。

java 异常处理不规范案例

捕获

  • 捕获异常的时候不区分异常类型
  • 捕获异常不完全,比如该捕获的异常类型没有捕获到
try{……
} catch (Exception e){ // 不应对所有类型的异常统一捕获,应该抽象出业务异常和系统异常,分别捕获……
}

传递

  • 异常信息丢失
  • 异常信息转译错误,比如在抛出异常的时候将业务异常包装成了系统异常
  • 吃掉异常
  • 不必要的异常包装
  • 检查异常传递过程中不适用非检查检异常包装,造成代码被throws污染
try{……
} catch (BIZException e){ throw new BIZException(e); // 重复包装同样类型的异常信息 
} catch (Biz1Exception e){ throw new BIZException(e.getMessage()); // 没有抛出异常栈信息,正确的做法是throw new BIZException(e); 
} catch (Biz2Exception e){throw new Exception(e); // 不能使用低抽象级别的异常去包装高抽象级别的异常,这样在传递过程中丢失了异常类型信息
} catch (Biz3Exception e){throw new Exception(……); // 异常转译错误,将业务异常直接转译成了系统异常
} catch (Biz4Exception e){…… // 不抛出也不记Log,直接吃掉异常
} catch (Exception e){throw e;
}

处理

  • 重复处理
  • 处理方式不统一
  • 处理位置分散
try{try{try{……} catch (Biz1Exception e){log.error(e);  // 重复的LOG记录throw new e;}try{……} catch (Biz2Exception e){……  // 同样是业务异常,既在内层处理,又在外层处理}} catch (BizException e){log.error(e); // 重复的LOG记录throw e;}
} catch (Exception e){// 通吃所有类型的异常log.error(e.getMessage(),e);
}

java 异常处理规范案例

1、阿里巴巴Java异常处理规约

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

阿里巴巴Java开发规范中有15条异常处理的规约,其中下面两条使用的时候是比较困惑的,因为并没有告诉我们应该如何定义异常,如何抛出异常,如何处理异常:

  • 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。
  • 【推荐】定义时区分unchecked / checked 异常,避免直接使用RuntimeException抛出,更不允许抛出Exception或者Throwable,应使用有业务含义的自定义异常。

2、异常处理最佳实践

1、使用 try-with-resource 关闭资源。

2、抛出具体的异常而不是 Exception,并在注释中使用 @throw 进行说明。

3、捕获异常后使用描述性语言记录错误信息,如果是调用外部服务最好是包括入参和出参。

logger.error(“说明信息,异常信息:{}”, e.getMessage(), e)

4、优先捕获具体异常。

5、不要捕获 Throwable 异常,除非特殊情况。

6、不要忽略异常,异常捕获一定需要处理。

7、不要同时记录和抛出异常,因为异常会打印多次,正确的处理方式要么抛出异常要么记录异常,如果抛出异常,不要原封不动的抛出,可以自定义异常抛出。

8、自定义异常不要丢弃原有异常,应该将原始异常传入自定义异常中。

throw MyException(“my exception”, e);

9、自定义异常尽量不要使用检查异常。

10、尽可能晚的捕获异常,如非必要,建议所有的异常都不要在下层捕获,而应该由最上层捕获并统一处理这些异常。。

11、为了避免重复输出异常日志,建议所有的异常日志都统一交由最上层输出。就算下层捕获到了某个异常,如非特殊情况,也不要将异常信息输出,应该交给最上层统一输出日志。

参考

https://zhuanlan.zhihu.com/p/617291696

http://www.yayakq.cn/news/136422/

相关文章:

  • 在百度怎么建立自己的网站吗wordpress one page
  • 中山学校网站建设网站建设制作包括哪些
  • 学校网站建设总结开发公司成本部年终总结
  • 黄页88网是什么性质的网站云酒店网站建设
  • 网站登录页面html模板菲律宾 做菠菜网站
  • 中国有几家网络公司株洲seo主管
  • 服饰 公司 网站建设深圳网站制作网站建设怎么制作网站深圳博纳
  • 学院网站建设流程图西安东郊网站建设公司
  • 58同城网站建设推广网站建设唯美网站建设
  • 旅游建设投资公司中网站网站关闭模板
  • 购物网站建设需求长沙网站开发湖南微联讯点不错
  • 网站首页菜单栏表怎么做WordPress 多用户数据
  • jquery 案例网站专业网站定制设计公司
  • 简述营销型网站推广的方法科技期刊
  • 网站备案 改名软文的概念
  • 检测站营销方案wordpress有点尴尬
  • 长春互联网网站关键字优化合同
  • 做淘宝网站代理餐厅vi设计公司
  • 毕业设计做网站论文金泉网做网站找谁
  • 前台网站模板怎么做时光网站
  • 摄影作品网站源码老河口网站定制
  • 网站制作哪家实惠给网站做维护是什么工作
  • 网站建设需要什么硬件和软件有哪些方面嘉兴自助建站系统
  • 深圳网站制作 优选灵点网络上海网站建设 销售
  • 网站建设策略书施工企业安全培训
  • 网站首页设计方案洛阳做网站公司
  • 物流网站开发项目书营销策划
  • 免费1级做爰片免费网站wordpress模板制作教程
  • 化妆品备案查询网站女孩做网站工作辛苦吗
  • 现代农业建设 乡网站小程序开发平台排名