中天建设集团有限公司是国企吗,娄底360seo优化公司,苏州网站建设 网络推广公司,做系统之前的网站上一篇的一元二次方程求根的例子#xff0c;让我想起了一件事。一元二次方程求根的程序#xff0c;如果遇到Delta0#xff0c;则无解#xff0c;函数不能返回值。在这个例子中#xff0c;print打印一条提示信息#xff0c;然后在求平方根的过程中引发异常。这样处理让我想起了一件事。一元二次方程求根的程序如果遇到Delta0则无解函数不能返回值。在这个例子中print打印一条提示信息然后在求平方根的过程中引发异常。这样处理马马虎虎也算处理好了。例子详见https://blog.csdn.net/aaasssdddd96/article/details/136867786
当然有些不满意的地方。因为在打印Delta0的地方已经知道计算要出问题了但是不管故意让程序执行下去直到在内部真的引发一个异常。必然的。引发的时候又输出了一条信息。这信息微观上准确宏观上可能让人迷惑。
所以要不要引进明确的异常机制? 如果引进怎么做?
明显的做法有2种。1是增加一个叫作exception的内部函数。遇到Delta0后print打印一条提示信息然后调用无参数的exception触发异常或者exception接受一个提示信息做参数这样就省下了print语句。
func Delta(a,b,c)
{return b*b-4*a*c;
}func root(a, b, c, neg)
{d Delta(a,b,c);if(d0) { print Delta 0; exception();}return (-b (neg? -d**0.5: d**0.5))/(2*a);
}
这样做还是有些不满意。因为内部函数都统一有一个参数采用无参数的exception多了一个需要特殊处理的例外。而如果传一个字符串参数给exception也产生了一个需要特殊处理的例外 因为所有的函数都只接受‘数’做参数这里需要接受字符串参数。
所以考虑第2种方法。引入Exception 语句。Exception 语句跟print语句是不是很像这种方法只需要新增一个关键字Exception。然后用它来代替print。Exception直接看成print。这样基本上没什么工作需要做了。当然print完成以后会自动引发一个Exception功能。遇到Exception后后面的return 语句就不执行了。这里稍微有点不满的是跟C语言有了一点差别C语言没有Exception语句。
func Delta(a,b,c)
{return b*b-4*a*c;
}func root(a, b, c, neg)
{d Delta(a,b,c);if(d0) { exception Delta 0; }return (-b (neg? -d**0.5: d**0.5))/(2*a);
}
print语句可以容纳多个输出了。当然exception 也可以了。
...if (d0) {exception a,x**2 ,b,x , c, 0; Delta0.;}exception可以容纳多个输出。又如果exception的输出中调用的函数表达式中又遇到异常会怎么样exception的输出被打断结果仍然是异常。
这样看解释程序增加一个Exception功能并没有难度。简直太简单了。简单的简直不想动手去做。嗯现在就偷个懒以后真需要就去做一下。