ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java异常

2020-06-14 22:57:04  阅读:268  来源: 互联网

标签:回滚 Java RuntimeException throw 异常 throws Throws


认识Java异常

 

throw(抛出)和throws(声明)的区别

throws一般用于检查型异常,就是编译时就有需要声明或者捕获的异常,表示此方法不处理异常,而交给方法调用处进行处理

throw一般用于运行时异常,继承于(RuntimeException),并且不需要throws Exception

 

异常大体分为两类

一类是RuntimeException,程序中完全可以避免的类似:数组越界异常,空指针异常

一类是非RuntimeException,是程序无法避免的,例如程序在读取文件,正好磁盘出现问题,就会引发IOException,这个靠完美代码无法解决的异常,需要我们告诉程序遇到这类问题后该怎么做

比如文件找不到、网络超时,则抛出编译时异常,否则比如磁盘满,抛运行时异常

参考

1、Throw用于方法内部,Throws用于方法声明上
2、Throw后跟异常对象,Throws后跟异常类型
3、Throw后只能跟一个异常对象,Throws后可以一次声明多种异常类型

 

对异常处理的一些主观见解

 

处理异常

  1. 对于一些可预见的错误,如对象可能为空,可直接通过if判断,然后继续执行逻辑
  2. 对于不可预知的情况,如服务器冒烟了,打雷劈中机房了,需要使用try-catch来对异常进行处理

Spring中的异常事务

  1. 对于@Transactional可以保证RuntimeException错误的回滚,如果想保证非RuntimeException错误的回滚,需要加上rollbackFor = Exception.class 参数(这时,只要报错都会回滚)。
  2. 在1的前提下如果要在@Transactional注解的方法中使用try-catch,那么需要明确的抛出throw 异常,才能被Spring的事务所支持,且回滚

非常清晰的Spring事务参考

 

异常导致的问题

  1. throw或者throws异常会导致程序终止
  2. try-catch会捕获异常并且继续执行方法剩余的代码,也可以通过return终止方法

标签:回滚,Java,RuntimeException,throw,异常,throws,Throws
来源: https://www.cnblogs.com/guaosky/p/13127513.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有