CWE-369:除以零
查看自定义信息:
![]() ![]()
![]() ![]()
![]() ![]()
![]() ![]()
![]() ![]()
![]()
示例1 以下Java示例包含一个函数来计算平均值,但不能验证用作分母的输入值不是零。这将创建一个例外,以尝试除以零。如果Java异常处理无法处理此错误,可能会发生意外结果。
(不良代码)
示例语言:爪哇
public int int computeaverageresponsetime(int totaltime,int numrequests){
返回总时间 / numRequests; }通过验证用作分母的输入值以下代码将确保除零错误的划分不会导致意外结果。以下Java代码示例将验证输入值,输出错误消息并引发异常。
(好代码)
public int int computeaverageresponsetime(int totaltime,int numrequests)抛出arithmeticexception {
if(numrequests == 0){ }
system.out.println(“零尝试!”); }投掷算术感受; 返回总时间 / numRequests; 示例2 以下C/C ++示例包含一个函数,该函数将两个数字值划分,而无需验证用作分母的输入值不是零。这将造成尝试将零除以零的错误,如果此错误不会被语言的错误处理能力捕获,则可能会发生意外的结果。
(不良代码)
示例语言:C
双分裂(双X,双y){
返回x/y; }通过验证用作分母的输入值以下代码将确保除零错误的划分不会导致意外结果。如果调用该方法并传递零,则第二个参数将被抛出DivideByZero错误,应由调用块捕获,并带有指示错误的输出消息。
(好代码)
const int divideByZero = 10;
双分裂(双X,双y){
如果(0 == y){ }
投掷DivideByZero; }返回x/y; ... 尝试{
分隔(10,0); }捕获(int i){
如果(i == dividebyzero){ }
cerr <<“除以零错误”; }
示例3 以下C#示例包含一个函数,该函数将两个数字值划分,而无需验证用作分母的输入值不是零。这将造成尝试将零除以零的错误,如果此错误不会被语言的错误处理能力捕获,则可能会发生意外的结果。
(不良代码)
示例语言:C#
int division(int x,int y){
返回(x / y); }如果用作分母的输入值为零,则可以修改该方法以升高,捕获和处理DivideByZeroException。
(好代码)
int safeDivision(int x,int y){
尝试{ }
返回(x / y); }catch(system.dividebyzeroexception dbz){
system.console.writeline(“零尝试!”); }返回0;
![]()
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |