impala里面断言使用了google的guava库Preconditions类,老外写代码这么喜欢断言吗,不过代码简洁优雅多了,不用那么多if else判断了。
Preconditions里面的方法:
1 .checkArgument(boolean) :
功能描述:检查boolean是否为真。 用作方法中检查参数 失败时抛出的异常类型: IllegalArgumentException2.checkNotNull(T):
功能描述:检查value不为null, 直接返回value; 失败时抛出的异常类型:NullPointerException 3.checkState(boolean): 功能描述:检查对象的一些状态,不依赖方法参数。 例如, Iterator可以用来next是否在remove之前被调用。 失败时抛出的异常类型:IllegalStateException 4.checkElementIndex(int index, int size): 功能描述:检查index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。 失败时抛出的异常类型:IndexOutOfBoundsException 5.checkPositionIndex(int index, int size): 功能描述:检查位置index是否为在一个长度为size的list, string或array合法的范围。 index的范围区间是[0, size)(包含0不包含size)。无需直接传入list, string或array, 只需传入大小。返回index。 失败时抛出的异常类型:IndexOutOfBoundsException6.checkPositionIndexes(int start, int end, int size):
功能描述:检查[start, end)是一个长度为size的list, string或array合法的范围子集。伴随着错误信息。 失败时抛出的异常类型:IndexOutOfBoundsException