java--何时处理Exception(哪一个层级),基包装的础类处理任务尽可能简洁,写入日志,检查null等运行时异常

1. 运行时异常和受检异常

2. 提前预防运行时异常。最常发生的是NPE,而检查NPE是程序员的基本职责。其他的,如除0等运行时异常的检查,需要程序员仔细检查,每个函数都得检查(除非可以确定不会有空指针等情况),哪怕if()语句数量增加。无法通过预检查的异常除外,如在解析一个外部传来的字符串形式数字时,通过catch NumberFormatException来实现。

null:1)如果是外部获取,则有必要检查null;2)如果是内部的或者逻辑上保证正确的,可以不查null。

3. 处理受检异常。如从数据库取数据,http链接等获取外部数据,必须进行受检异常处理,因为这是即时进行正常操作也可能出现异常的情况。

4. DB或连接类等基础类无需关心连接失效问题,由上层类或连接池关心。

5. exception,交给调用者处理,如果认为所在层次应该处理此exception时,自己处理。

6. 如果在自身层次处理了exception,则返回值最好是可以让程序继续运行,但不会进一步处理数据的数值。比如:返回一个空的List,那么调用者接收到返回值后,不会中断程序,又由于返回的list个数为0,也不会往下一步运行。这一实现也需要程序整体上都是这么一个风格,即需要每一步都有对于空对象的处理。这样当exception发生后,调用者对数据的处理一视同仁,但是最后的结果能反映有错误发生。

7. 日志写入文件,信息要尽可能详细。不能太少,也不要重复。

8. 日志监控程序,定时(半分钟)扫描一次日志,从上次读取的地方开始,发现有error字符串,则发邮件告警。

9. 日志的监控,如果需要高可靠性和实时性,可以考虑socket或 消息队列 等进程间通信方式。

10. 面向对象是一种思想,学习一种思想是一个长的过程。

时间: 2024-12-28 09:41:58

java--何时处理Exception(哪一个层级),基包装的础类处理任务尽可能简洁,写入日志,检查null等运行时异常的相关文章

java中exception和error有什么区别,运行时异常和一般异常有什么区别

1.exception和error都是继承了throwable类,在java中只有throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型 2.exception和error体现了java平台设计者对不同异常情况的分类.exception是程序正常运行中,可以预料的意外情况,并且应该被捕获,进行相应的处理 3.error是指在正常情况下,不大可能出现的情况,绝大部分的error都会导致程序(比如jvm自身)处于非正常的.不可恢复的状态.既然是非

Java运行时异常和非运行时异常

1.Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类.Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示: 图片来源:http://blog.csdn.net/wuwenxiang91322/article/details/10346337 2.Throwable Throwable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常.其中异

java运行时异常与一般异常有何异同?

Throwable 是所有 Java 程序中错误处理的父类 ,有两种资类: Error 和 Exception . Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息. Exception :表示可恢复的例外,这是可捕捉到的. Java 提供了两类主要的异常 :runtime exception 和 checked exception . checked 

java中的一般异常与运行时异常

Java提供了两类主要的异常:runtime exception和checked exception.checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常.对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch.所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常. 但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理.当出现这样的异常时,总是由虚拟机接管.比如:我们从来没有人去处理过Nul

java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误

/** * Return whether the given throwable is a checked exception: * that is, neither a RuntimeException nor an Error. * @param ex the throwable to check * @return whether the throwable is a checked exception * @see java.lang.Exception * @see java.lang

Exception、Error、运行时异常与一般异常有何异同

转自博客  https://blog.csdn.net/m0_37531231/article/details/79502778 一.开场白 对于程序运行过程中的可能出现异常情况,java语言使用一种称为异常处理的错误捕捉机制进行处理.相信大家对 try { }catch( ){} finally{} 这种结构非常熟悉,使用频率极高.既然经常使用它,而且也是面试常问知识点,我们就有必要去深入地了解一下.也谈不上深入,只是java语言的基本功.下面,开始吧! 二.异常分类 在java中,异常对象都

从0开始学Java:运行时异常与一般异常有何异同?

无限互联从0开始学Java系列之JAVA相关基础知识,Java基础培训,String 和StringBuffer的区别 1.Java基础学习,从0开始学Java:String 和StringBuffer的区别? JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候你就可以使用StringBuffer.典型

java 异常-运行时异常

/* Exception中有一个特殊的子类异常RunTimeException运行时异常. 如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过. 如果在函数上声明了该异常.嗲用着可以不要进行处理.编译一样通过. 之所以不用在函数声明,是因为不需要让调用者处理. 当该异常发生,希望程序停止.因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修改. 自定义异常时,如该异常的发生,无法再继续进行运算,就让自定义异常继承RunTimeException.运行时异常,会引发程序停止

Java之运行时异常与编译时异常区别

Java中用2种方法处理异常: 1.在发生异常的地方直接处理: 2.将异常抛给调用者,让调用者处理. Java异常可分为3种: (1)编译时异常:Java.lang.Exception (2)运行期异常:Java.lang.RuntimeException (3)错误:Java.lang.Error Java.lang.Exception和Java.lang.Error继承自Java.lang.Throwable; Java.lang.RuntimeException继承自Java.lang.E