exception处理
try{}catch(){}catch{}finally{}
依次向上层抛出异常,知道发现俘获异常的语句。调用栈
throwable:Error、Exception
多异常处理:
exception是所有异常的父类
子类异常要排到父类异常前面
finally语句:
无论是否有异常都执行
RuntimeException及其子类,可以不明确处理,否则称为受检的异常。
受检的异常:要么catch,要么throws
try-with-resource
try(type var = new type()){
...
}自动添加了finally{var.close();}
重抛异常
throw e; 将当前异常再次抛出
throw new Exception("some message");重新生成一个异常并抛出
throw new Exception("some message", e);重新生成并抛出新异常,该异常中包含了当前异常的信息;可用e.getCause()来得到内部异常
断言assertion
assert 表达式;
assert 表达式:信息; //如果表达式不为true,则程序产生异常,输出错误信息
java -ea -cp ... className
测试驱动@Test
java测试过程经常使用JUnit框架 www.junit.org
eclipse中,项目右键-new-junit test case (run as-Junit test)
程序中的错误
syntax error 语法错,编辑编译器发现
runtime error 运行错误,异常处理机制
logic error 逻辑错误,debug,unit test