java - 在图形代码中处理除以零

标签 java math image-processing clojure divide-by-zero

我正在编写一个程序图像生成库 ( Clisk ),它允许用户定义自己的数学函数来生成图像。

他们显然有可能定义一个函数,该函数可能导致某些像素除以零,例如(伪代码)

red = 1.0 / (xposition - 0.5)

每当 xposition = 0.5(图像的中间)时,这将导致除以零

理想情况下,我不希望图像生成崩溃...但与此同时,我不想创建一个笨拙的 hack 来忽略​​被零除,这会在以后导致问题。

处理这些案例的良好、稳健、系统的方法是什么?

最佳答案

Ideally I don't want image generation to crash... but at the same time I don't want to create a clunky hack to ignore divide by zeros that will cause problems later.

(我假设你的意思是这个片段是一些用户提供的代码的例子......)

显然,如果用户提供的代码可能引发异常,那么您就无法阻止这种情况的发生。 (而且在除法之前进行检查的建议显然与您无关……。)

那么,除了“崩溃”之外,您还能做什么?生成空图像?忽略用户的功能?你会产生垃圾……而这不是用户需要的。

您当然无法进入并修复他/她的 Java 代码。 (如果该片段是用某种自定义语言编写的代码,那么您也无法访问并更正它。您/您的图书馆不知道用户提供的代码应该正在做...)

没有。我认为最好的答案是将用户提供的代码中出现的任何意外(未经检查)异常包装在您自己的异常中,清楚地告诉用户他的代码中发生了错误。然后由调用您的库代码的应用程序代码决定是处理异常还是“崩溃”。


如果您要为用户编写函数提供一种“良好、稳健、系统的方法”,我认为您找错了地方。这不是你真正关心的......

关于java - 在图形代码中处理除以零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712163/

相关文章:

java - JPA @NamedQuery 有两个表,可能吗?

java - Java Spring Bean 中的实例变量

java - java中使用Blob触发器的azure函数的传入内容应声明哪个类

java - 寻找位置和方向

java - 没有从 join() 方法中得到 InterruptedException

java - Java 中的中缀到前缀数学表达式转换器

algorithm - 我如何衡量某些词的趋势,比如 Twitter?

math - 如何找到两个坐标系之间的旋转矩阵?

python - 使用OpenCV与Matlab评估校准结果

c - OPENCV 在 cvMat (C) 中保存原始矩阵并绘制它时出现问题