OpenJDK源码研究笔记系列文章,是我在阅读OpenJDK7源码的过程中的一些体会、收获、看法。
把研究过程中的成长和收获一点点地整理出来,是对自己研究学习的一个小结,也有可能给学习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-8-src-b132-03_mar_2014源码
openjdk-1.6.0-unofficial-b27-windows-amd64原版,zip文件,下载后直接install。
openjdk-8u292-b10 包含 window+linux 版的jdk
openjdk-17源码(openjdk-17+35_src.zip)
openjdk-7-fcs-src-b147-27_jun_2011.zip
openjdk:openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
openjdk-17 GA(openjdk-17_linux-aarch64_bin.tar.gz) 适用于Linux aarch64系统
最新版windows openjdk-8u41-b04-windows-i586-14_jan_2020.zip
最新版windows openjdk-15.0.1_windows-x64_bin.zip
suse15 java8安装包openlogic-openjdk-8u262-b10-linux-x64-el.rpm,安装指令 sudo rpm -ivh openlogic-openjdk-8u262-b10-linux-x64-el.rpm
官方的jdk8镜像没有自带字库,或者带字库的镜像非常巨大。所以自己构建了一个。 1. 自定义构建镜像的Dockerfile ``` FROM openjdk:8-jdk-alpine # 安装字体库 RUN apk add --update --no-cache ttf-dejavu ...
最新版windows openjdk-17.0.1_windows-x64_bin.zip最新版windows openjdk-17.0.1_windows-x64_bin.zip
openjdk-8-src-b132-03_mar_2014.zip openjdk-8-src-b132-03_mar_2014.zip openjdk-8-src-b132-03_mar_2014.zip
openjdk-18(openjdk-18+36_windows-x64_bin.zip)
openjdk 8关于windows的native方法的那部分源代码 openjdk 8关于windows的native方法的那部分源代码
最新版 openjdk-15_windows-x64_bin.zip最新版 openjdk-15_windows-x64_bin.zip
openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz
openjdk-8u342-b07-windows-x64