4、参数检查

我们在使用一个方法的时候,经常要传入参数。而参数有可能是有问题的,也就是不符合方法需要。

那么这时候,这个方法如果能对参数进行检测是否符合,如果是因为参数错了我们就可以很清晰地知道错误。否则可能导致很多奇怪的错误。

参数检查的示例:

public void a(int i){
    if(i == 0){
        throw new Exception("不能为0");
    }
    // doSomething...
}

如果i的值是0,抛出异常后我们很清晰的知道问题在i的值。

但是,我们不应该处处都进行参数检查,如果参数能够完成合理的工作,对参数的限制越少越好。

时间: 2024-10-06 23:43:07

4、参数检查的相关文章

【代码优化】方法签名及参数检查

参数检查: 绝大多数方法的构造器对于传递给它的参数值会有某些限制.例如,索引值必须是非负数,对象不能 为null等等. 如果传递无效参数给方法,在执行前没对参数进行检查,该方法可能在处理过程中失败,并且产生令 人费解的异常.更糟的是,该方法可以正常返回数据.但是会得到一个错误的结果,你还认为是正确的, 没发现其中的倪端. 所以对于方法参数的检查是有必要的. 常见的几个错误,IllegalArgumentException,IndexOutOfBoundsException和NullPointEx

python定义函数以及参数检查

(转自廖雪峰网站) 函数定义 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的my_abs函数为例: def my_abs(x): if x >= 0: return x else: return -x 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑. 如果没有re

Java 的参数检查与断言 - Guava Preconditions

在前一篇 Scala 的参数检查与断言: require, assert, assume 和 ensuring,捉摸 Scala 的断言时提到了 JDK 内置对断言的粗略支持,也就是 assert 语句,并且默认该特性是被关掉,需 -ea 开启. assert object != null;assert object != null : "object can't be null"; 还进一步接触了 Scala 的 Predef 方法 require, assert, assume,

STM32 一种参数检查用法介绍

STM32 一种参数检查用法介绍 assert_param()是一个在代码中很常见的写法,这个函数的功能一般是对函数参数的合法性进行检查,这里以一个例子进行分析: assert_param(IS_GPIO_ALL_PERIPH(GPIOx)) 函数的参数是IS_GPIO_ALL_PERIPH(GPIOx),原型为: #define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || ((PERIPH) == GPIOB) || ((PERIPH)

Catel帮助手册-Catel.Core:(1)参数检查

  我们检查方法是否正确,一般是返回对错,或者是是否抛出一个异常,大部分人不检查异常的正确性,那么这种错误在很深的堆栈中,很难查看. Catel与一般的检查方法不同,一般是使用   public void CheckForException(object obj) { if (obj == null) { throw new ArgumentNullException("obj"); } }   然而,Catel会记录所有的行为,因此开始的检查方式如下: public void Che

Linux下安装Oracle10g提示内核参数检查失败

如图: 先简单介绍下常用的几个内核参数: kernel.shmmax:单个共享内存段的最大字节数 kernel.shmmni:共享内存段的最大个数 kernel.shmall:共享内存的总页数 kernel.sem:信号灯参数 fs.file-max:系统中所允许的文件句柄最大数目. [[email protected] /]# cat /proc/sys/fs/file-max       //查看命令 net.ipv4.ip_local_port_range:应用程序可使用的ipv4端口范围

空函数,参数检查,返回多个值

廖雪峰的官方网站: 原文地址:https://blog.51cto.com/13923058/2357236

内联函数、默认参数和函数占位参数

内联函数 定义:内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质.内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处.编译时,类似宏替换,使用函数体替换调用处的函数名.一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理. C++中的const常量可以替代宏常数定义,如: const int A = 3; ? #define A 3 C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!) C++

Effective Java - 方法的参数声明

给方法的参数加上限制是很常见的,比如参数代表索引时不能为负数.对于某个关键对象引用不能为null,否则会进行一些处理,比如抛出相应的异常信息. 对于这些参数限制,方法的提供者必须在文档中注明,并且在方法开头时检查参数,并在失败时提供明确的信息,即: detect errors as soon as possible after they occur 这将成为准确定位错误的一大保障. 如果没有做到这一点,最好的情况是方法在处理过程中失败并抛出了莫名其妙的异常,错误的源头变得难以定位,但这是最好的情