OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常
2013-10-14 18:30
537 查看
OpenJDK源码研究笔记系列文章,是我在阅读OpenJDK7源码的过程中的一些体会、收获、看法。
把研究过程中的成长和收获一点点地整理出来,是对自己研究学习的一个小结,也有可能给学习Java的一些同学带来一些启发。
我打算每篇只讲解一点,这样篇幅较小,读起来没有太大压力。
写起来压力也小,抽出10到20分钟就可以写1篇。
本篇简要介绍,方法(函数)体内的参数检查,遇到不合法的输入参数时,抛出带关键错误提示信息的异常。
当输入参数position<0的时候,抛出IllegalArgumentException(postion为负数)。
当输入参数size<0的时候,抛出IllegalArgumentException(size为负数)。
当输入参数position和size的和<0的时候,抛出IllegalArgumentException(position+size为负数)。
这样,当输入参数不合法的时候,程序就不会再顺序执行下去。
通过抛出异常的方式,避免了程序进一步不合理的执行。
从异常的类型IllegalArgumentException来看,一看就知道是参数不合法造成的。
从异常的错误提示信息来看,“postion为负数”、“size为负数”、“position+size为负数”,准确地告诉了我们哪个参数不合法。
简而言之,异常的构造非常准确和友好,值得学习。
原文参见:http://FansUnion.cn/articles/2772
把研究过程中的成长和收获一点点地整理出来,是对自己研究学习的一个小结,也有可能给学习Java的一些同学带来一些启发。
我打算每篇只讲解一点,这样篇幅较小,读起来没有太大压力。
写起来压力也小,抽出10到20分钟就可以写1篇。
本篇简要介绍,方法(函数)体内的参数检查,遇到不合法的输入参数时,抛出带关键错误提示信息的异常。
/** * Initializes a new instance of this class. * * @param channel * The channel upon whose file this lock is held * * @param position * The position within the file at which the locked region * starts; must be non-negative * * @param size * The size of the locked region; must be non-negative, and the * sum <tt>position</tt> + <tt>size</tt> must be * non-negative * * @param shared * <tt>true</tt> if this lock is shared, <tt>false</tt> if it is * exclusive * * @throws IllegalArgumentException * If the preconditions on the parameters do not hold * * @since 1.7 */ protected FileLock(AsynchronousFileChannel channel, long position, long size, boolean shared) { if (position < 0) throw new IllegalArgumentException("Negative position"); if (size < 0) throw new IllegalArgumentException("Negative size"); if (position + size < 0) throw new IllegalArgumentException("Negative position + size"); this.channel = channel; this.position = position; this.size = size; this.shared = shared; }
当输入参数position<0的时候,抛出IllegalArgumentException(postion为负数)。
当输入参数size<0的时候,抛出IllegalArgumentException(size为负数)。
当输入参数position和size的和<0的时候,抛出IllegalArgumentException(position+size为负数)。
这样,当输入参数不合法的时候,程序就不会再顺序执行下去。
通过抛出异常的方式,避免了程序进一步不合理的执行。
从异常的类型IllegalArgumentException来看,一看就知道是参数不合法造成的。
从异常的错误提示信息来看,“postion为负数”、“size为负数”、“position+size为负数”,准确地告诉了我们哪个参数不合法。
简而言之,异常的构造非常准确和友好,值得学习。
原文参见:http://FansUnion.cn/articles/2772
相关文章推荐
- OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常
- OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常
- OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常
- OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常
- Code Fragment-错误的参数类型,通过抛出异常提示用户。
- Spring Boot实战之全局异常捕获 实现参数异常检查返回统一错误信息
- OpenJDK源码研究笔记(九)-可恨却又可亲的的异常(NullPointerException)
- OpenJDK源码研究笔记(九)-可恨却又可亲的的异常(NullPointerException)
- OpenJDK源码研究笔记(九)-可恨却又可亲的的异常(NullPointerException)
- OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMe...
- OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
- OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
- [置顶] OpenJDK源码研究笔记(九)-可恨却又可亲的的异常(NullPointerException)
- OpenJDK源码研究笔记(九)-可恨却又可亲的的异常(NullPointerException)
- OpenJDK源码研究笔记(十三):Javac编译过程中的上下文容器(Context)、单例(Singleton)和延迟创建(LazyCreation)3种模式
- 写一个方法void triangle(int a,int b,int c),判断三个参数是否能构成一个三角形。如果不能则抛出异常IllegalArgumentException,显示异常信息:a,b,
- Java| Java异常新理解RuntimeException(不抛出异常,程序运行时出错会有错误信息)
- Yii源码阅读笔记 - 错误/异常处理
- Sharepoint学习笔记---Debug&TroubleShooting-如何让Sharepoint2010网站返回详细错误信息
- OpenJDK源码研究笔记(六)--观察者模式工具类(Observer和Observable)和应用示例