在图形代码中处理除零

mik*_*era 2 java math clojure image-processing divide-by-zero

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

很明显他们可以定义一个函数,它可以导致某些像素除以零,例如(伪代码)

red = 1.0 / (xposition - 0.5)
Run Code Online (Sandbox Code Playgroud)

只要xposition = 0.5(图像的中间),这将导致除以零

理想情况下,我不希望图像生成崩溃......但与此同时,我不想创建一个笨重的黑客,以忽略以后会导致问题的零除.

处理这些案件的好方法,强大而系统的方法是什么?

Ste*_*n C 8

理想情况下,我不希望图像生成崩溃......但与此同时,我不想创建一个笨重的黑客,以忽略以后会导致问题的零除.

(我假设您的代码片段是一些用户提供的代码的示例......)

显然,如果用户提供的代码可能会抛出异常,那么就无法阻止这种情况发生.(并且在分裂之前检查的建议对你来说显然是无关紧要的.)

那么可以从"撞车"办分开?生成一个空图像?忽略用户的功能?你会生产垃圾......而这不是用户需要的.

你肯定无法进入并修复他/她的java代码.(如果该片段是用某种自定义语言编写的代码,那么你就无法触及并纠正它.你/你的库不知道用户提供的代码该做什么......)

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


如果你问一个"良好的,强大的,系统的方法"为用户写自己的职能,我认为你是找错了树.这不是你真正关心的问题......