湛江自助建站模板,徐州建设工程交易网招标公告查询,沅江网站开发,公司架设网站费用怎么做分录来源#xff1a;Lrwinlrwinx.github.io/2016/04/28/如何优雅的设计java异常/导语异常处理是程序开发中必不可少操作之一#xff0c;但如何正确优雅的对异常进行处理确是一门学问#xff0c;笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的。由于本文只作一些经验之…来源Lrwinlrwinx.github.io/2016/04/28/如何优雅的设计java异常/导语异常处理是程序开发中必不可少操作之一但如何正确优雅的对异常进行处理确是一门学问笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的。由于本文只作一些经验之谈不涉及到基础知识部分如果读者对异常的概念还很模糊请先查看基础知识。如何选择异常类型异常的类别正如我们所知道的java中的异常的超类是java.lang.Throwable(后文省略为Throwable),它有两个比较重要的子类,java.lang.Exception(后文省略为Exception)和java.lang.Error(后文省略为Error)其中Error由JVM虚拟机进行管理,如我们所熟知的OutOfMemoryError异常等所以我们本文不关注Error异常那么我们细说一下Exception异常。Exception异常有个比较重要的子类叫做RuntimeException。我们将RuntimeException或其他继承自RuntimeException的子类称为非受检异常(unchecked Exception)其他继承自Exception异常的子类称为受检异常(checked Exception)。本文重点来关注一下受检异常和非受检异常这两种异常。如何选择异常从笔者的开发经验来看如果在一个应用中需要开发一个方法(如某个功能的service方法)这个方法如果中间可能出现异常那么你需要考虑这个异常出现之后是否调用者可以处理并且你是否希望调用者进行处理如果调用者可以处理并且你也希望调用者进行处理那么就要抛出受检异常提醒调用者在使用你的方法时考虑到如果抛出异常时如果进行处理相似的如果在写某个方法时你认为这是个偶然异常理论上说你觉得运行时可能会碰到什么问题而这些问题也许不是必然发生的也不需要调用者显示的通过异常来判断业务流程操作的那么这时就可以使用一个RuntimeException这样的非受检异常.好了估计我上边说的这段话你读了很多遍也依然觉得晦涩了。那么请跟着我的思路在慢慢领会一下。什么时候才需要抛异常首先我们需要了解一个问题什么时候才需要抛异常异常的设计是方便给开发者使用的但不是乱用的笔者对于什么时候抛异常这个问题也问了很多朋友能给出准确答案的确实不多。其实这个问题很简单如果你觉得某些”问题”解决不了了那么你就可以抛出异常了。比如你在写一个service,其中在写到某段代码处,你发现可能会产生问题那么就请抛出异常吧相信我你此时抛出异常将是一个最佳时机。应该抛出怎样的异常了解完了什么时候才需要抛出异常后我们再思考一个问题真的当我们抛出异常时我们应该选用怎样的异常呢究竟是受检异常还是非受检异常呢(RuntimeException)呢我来举例说明一下这个问题先从受检异常说起,比如说有这样一个业务逻辑需要从某文件中读取某个数据这个读取操作可能是由于文件被删除等其他问题导致无法获取从而出现读取错误那么就要从redis或mysql数据库中再去获取此数据,参考如下代码getKey(Integer)为入口程序.public String getKey(Integer key){ String value; try { InputStream inputStream getFiles(/file/nofile); //接下来从流中读取key的value指 value ...; } catch (Exception e) { //如果抛出异常将从mysql或者redis进行取之 value ...; }} public InputStream getFiles(String path) throws Exception { File file new File(path); InputStream inputStream null; try { inputStream new BufferedInputStream(new FileInputStream(file)); } catch (FileNotFoundException e) { throw new Exception(I/O读取错误