异常:异常都是派生于Throwable类的一个实例。
error:描述了Java运行时系统的内部错误和资源耗尽的错误。
Exception:由于RuntimeException产生的原因都是你的原因。(非受检查异常)
异常:抛出异常和捕获异常。
******子类方法中声明的受检查异常不能比超类方法中声明的异常更通用。就是子类方法中抛出的异常必须更加特定,或者不抛出异常。
捕获异常时,异常变量隐含为final变量。
//捕获异常建议
InputStream in=
try{
try{
.....
}finaly{
in.close();
}
}catch(IOException e)
{
show error message
}
按照上面的代码捕获异常,可以提高代码的清晰度。
抛出IOException可以直接写成try-with-resourses的最简形式:
try(Scanner s=new Scanner(new FileStream("/usr/share/dict/word"),"utf8")
{
...
}
//这样不管是否抛出异常,s都会关闭,而且如果s关闭抛出异常不会覆盖之前的异常。
断言:assert,只用于开发和测试阶段。(确定程序内部的错误位置)
assert 条件;
assert 条件:表达式;
两种形式对条件进行检测,如果条件为false,则会抛出一个AssertionError异常。在第二个形式中,表达式将会被传入AssertionError的构造器,并转为一个消息字符出串。
记录日志
可以使用getLogger方法创建或获取记录器
private static final Logger myLogger =Logger.getLogger("com.mycompany.myapp")
日志记录有7个级别:severe warning info config fine finer finest
使用日志通常是记录不可预料的异常,使用下面两种方法用来记录记录异常内容:
void throwing(String className,String methodName,Throwable t)
void log(Level 1,String message, Throwable t)