**
运行时异常和受检异常的区别:
**
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常是一种常见的运行错误.
受检异常跟程序上下环境有关,即使程序设计无误,仍然可能因使用的问题而引起.JAVA编译器要求方法必须声明抛出未被捕获的运行时异常.异常和继承一样,时面向对象程序设计中经常被滥用的东西,在Effective JAVA中对异常的使用给出了以下指导原则:
1.不要讲异常处理用于正常的控制流(设计良好的API不应该墙皮它的调用者为了正常的控制流而使用异常)
2.对可以恢复的情况使用受检异常,对变成错误使用运行时异常.
3.避免不必要的受检异常(可以通过一些状态检测手段来避免异常的发生)
4.优先使用标椎的异常
5.每个方法抛出的异常都要有文档
6.不要在catcg中忽略了捕获到的异常
7.保持异常的原子性
**
JAVA中异常处理的原理以及如何应用:
**
当JAVA程序违反了JAVA的语义规范时,JAVA虚拟机就会将发生的错误表示为一个异常.违反语义规则包括2中情况.一种是JAVA类库内置的语义检查.列入数组下标越界,会引发
IndexOutOfBoundsException;访问null的对象时会引发NullPointException,另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自用选择在何时使用throw关键字引发异常.所有的异常都是java.lang.Thowable的子类
**
常见的runtime exception:
**
ArithmeticException
算数异常
程序中出现了除以零这样的运算就会出这样的异常,对这种异常,要检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥。
ArrayStoreException
数组异常
BufferOverflowException
缓存溢出异常(写入时)
BufferUnderflowException
缓存溢出异常(读取时)
CannotRedoException
兼容异常 (此类的序列化对象与将来的摇摆版本不兼容)
ClassCastException
转化异常
JVM在检测到两个类型间转换不兼容时引发的运行时异常
出现这个异常的原因如下:
1.一个类是数字类,而由于误操作,错误的将数字类向数字类转换改写成了数字类向字符串类的转换,从而产生了异常。
2.大部分原因是因为强制转换或者是SQL映射时发生了这个异常。
NullPointException
空指针异常
1、某一对象没有被实例化,就拿来使用,如调用此对象的方法,会抛空指针异常。
2、获取从别的对象传过来的对象为空。
3、没有对你new出来的对象进行实例化。
4、你去数据库里查询一个空的对象,没有查询出来结果, 而你又执行了接收结果的变量 ,这样就会出现空指针异常
IndexOutOfBoundsException
数组下标越界异常
一个ArrayList数组中没有元素,而你想获取第一个元素,运行是就会报此类型的错误
.ClassNotFoundException
类找不到异常
该异常的解释是“指定的类不存在”,这里主要考虑一下类的名称和路径是否正确即可
IllegalArgumentException
方法的参数错误异常
很多J2ME的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常。
SQLException
Sql语句执行异常
由数据库管理系统抛出至服务器,应检查sql语句是否书写正确等。
**
err与exception的区别:
**
err表示恢复不是不可能但很困难的情况的一种严重问题,比如内存溢出,不可能指望程序能处理这样的情况
exception表示一种设计或实现问题.也就是说,它表示如果程序运行正常,从不会发生的情况.
如何打印入职?
cat/var/lpg/*.log
如果日志在更新,如何实时产看tail-f
/var/log/messages
还可以使用watch-d-n 1 cat /var/log/messages-d表示高亮不同的地方,-n表示多少秒刷新一次.