java基础之异常与调试

java中异常都是派生于Throwable类的一个实例。Throwable类的下一层分为两个分支Error和Exception.
Error类层次结构描述了java运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这种类型的对象。
出现Error错误时,只能使程序安全终止,别无他法。
进行java程序设计时,需要关注Exception层次结构。
RuntimeException异常是由于程序员导致的;
派生于类Error和RuntimeException的异常属于未检查异常,不应该用Throws子句抛出;其余异常属于已检查异常;
一个方法必须声明所有可能发生的已检查异常;而未检查异常要么不可控制(Error),要么就应该避免它们的发生(RuntimeException).
如果方法没有声明所有可能发生的已检查异常,编译器就会给出错误信息。
除了声明异常外,还可以捕获异常,这样可以使异常不被抛到方法之外,也不需要有throws规范。
子类覆盖超类的方法,子类方法声明的已检查异常不能超过超类方法声明的已检查异常范围;
一旦方法抛出异常,该方法就不能返回到调用者;
可以自定义派生于Exception类的异常类。
要想捕获一个异常,必须设置try/catch语句块。一个try可以带多个catch语句块,捕获多个异常类。
如果调用一个抛出已检查异常的方法,就必须对它进行处理,或者将它传递出去。如果想将异常传递出去,就必须在方法首部添加一个throws说明符;
try/catch/finally不管是否有异常被捕获,finally中的代码都会被执行;
tty/finally
只在异常情况下使用异常机制。
java中有一个专门的日志类Logger.日志记录器,日志过滤器,日志处理器(java.util.Logging.Handler)。
断言机制允许在测试期间向代码中插入一些检查语句,当代码发布时,这些检查语句会自动被移除。
启用或禁用断言是类加载器的功能;
断言失败是致命的,不可恢复的错误;
断言检查只用于开发和测试阶段,确定程序内部的错误位置;
在程序的任何代码处插入Thread.dumpStack(),就可以获得堆栈跟踪;

你可能感兴趣的:(java基础之异常与调试)