Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图形代码中零除的处理_Java_Math_Image Processing_Clojure_Divide By Zero - Fatal编程技术网

Java 图形代码中零除的处理

Java 图形代码中零除的处理,java,math,image-processing,clojure,divide-by-zero,Java,Math,Image Processing,Clojure,Divide By Zero,我正在为过程图像生成()编写一个库,它允许用户定义自己的数学函数来生成图像 显然,他们可以定义一个函数,该函数可能导致某些像素被零除,例如(伪代码) 每当xposition=0.5(图像中间)时,这将导致被零除 理想情况下,我不希望图像生成崩溃。。。但同时,我不想创建一个笨拙的黑客忽略被零除,这将导致以后的问题 处理这些案件的良好、稳健、系统的方法是什么 我不是真正的图形程序员,但你可以 private static final double MIN_X = 0.0000001 red =

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

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

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

理想情况下,我不希望图像生成崩溃。。。但同时,我不想创建一个笨拙的黑客忽略被零除,这将导致以后的问题


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

我不是真正的图形程序员,但你可以

 private static final double MIN_X = 0.0000001

 red = 1.0 / Math.max(xpos - 0.5, MIN_X);
很明显,如果你允许负数,你可能不得不在里面放一个绝对值

理想情况下,我不希望图像生成崩溃。。。但同时,我不想创建一个笨拙的黑客忽略被零除,这将导致以后的问题

(我假设您的意思是该代码段是一些用户提供的代码的示例…)

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

那么除了“撞车”你还能做什么呢?生成一个空图像?忽略用户的功能?你会制造垃圾。。。这不是用户需要的

您当然无法访问并修复他/她的java代码。(如果该代码段是用某种自定义语言编写的,那么您也无法访问并更正它。您/您的库不知道用户提供的代码应该做什么…)

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



如果你要求为用户编写函数提供一种“好的、健壮的、系统的方法”,我认为你找错了方向。这并不是你真正关心的…

你总是可以提供一个参数,询问他们在除以零时做什么。毕竟,这是他们的准则——他们应该知道什么最适合自己的情况


然后问题就变成了,这个参数的合理默认值是什么?我认为“返回0.0”或“抛出异常”对于这个应用程序都是合理的。只需确保将其记录在案。

也许您可以再解释一下:如果用户的功能出现问题,您为什么特别在意?为什么不让你的代码捕获异常并重新抛出一个UserDefinedCodeBuggeredUpException呢?关于一个类似的主题,有一个新的问题得到了一些很好的关注:
 private static final double MIN_X = 0.0000001

 red = 1.0 / Math.max(xpos - 0.5, MIN_X);