java 异常 断言

异常
导致异常的原因
1.用户输入错误
2.设备错误
3.物理限制
4.代码错误

异常的分类
 所有的异常均有Throwable继承而来,但是在下一层立即分解为两个分支,Error和Exception。Error类描述的Java运行时系统内部的错误和资源耗尽的错误。Exception包含两个分支,一个是运行时异常RuntimeException,另一个分支包含其他异常。运行时异常包括下面几种情况:错误的类型转换,数组访问越界,访问空指针等等。不是派生于运行时异常的异常包括下面的情况:试图在文件尾部后面读取数据,试图打开一个错误格式的URL,试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在。
在这些问题当中,RuntimeException一定是你能够处理的异常。
Java语言规范将派生于Error类或RuntimeException类的所有异常称为未检查异常,所有的其他类异常称为已检查异常。我们大部分谈到的异常都是RuntimeException异常。

异常抛出的方式
public class Test{

    public void detail()   throws IOException{
       System.out.println("I am a private method in Test class!");
    }
}
处理形式参见上面涂色部分,throws后面跟着异常的类型。

捕获异常的方法
try{
   //出现异常的代码块
}catch(ExceptionType e){
  //异常信息的保存,提示,处理 
} finally{
  //不论异常出现与否,后续的代码处理 
}
其中,finally的代码块不是必须添加的。在捕获异常的时候,可以同时捕获多个异常,即一个try多个catch的形式。

异常的抛出和捕获的使用要看处理的当前环境,如果上层不需要知道异常的处理,同时当前人员可以处理掉异常,就不建议使用异常的抛出。如果上层需要知道异常的情况,并能做出处理,那么就要选择抛出异常。一般在开发过程中,异常的处理一般是遇到就要以及处理,不要往上抛出。

使用异常的建议
1.异常处理不能代替简单的测试
2.不要过分的细化异常
3.合理利用异常的层次结构
4.不要压制异常
5.在检测错误时,严格要比宽松更好
6.要合理的传递底层的异常到高层


断言
断言是对程序执行的一种检测机制,但是含有大量断言的代码执行时间会很长。断言机制允许代码在测试时插入一些检查语句,当代码发布时,那些插入语句会被自动的移走。断言的使用形式有两种:
assert condition;
或者
assert condition:expression;

在默认情况下,断言被禁用。可以在程序运行时用-enableassertions或者-ea选项启用它:
java -enableassertions MyApp
需要注意的是在启用和禁用断言时不必重新编译程序。启用和禁用断言是类加载器的功能。当断言被禁用时,类加载器将禁用断言代码,因此不会降低程序的运行速度。
java -ea:MyClass -ea:com.model... MyApp
上面的命令行表示开启MyClass的断言,开启com.model包下的断言,MyApp表示项目名称。
禁用断言的命令是-disableassertions和-da。
对于系统类要使用-enablesystemassertions或者-esa来开启断言。

对于断言的使用注意事项:
1.断言失败是致命的,不可恢复的错误
2.断言检查只用在开发和测试阶段


就目前开发来说,现在的断言实现的功能一般用JUint来实现。

你可能感兴趣的:(java)