我正在编写一个程序图像生成库 ( 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/