2012-11-16 54 views

回答

0

有没有这样的功能可用于资产,但是,它不需要它(见下文)。

我的理解是事先测试以避免异常,而不是抓住它们是更好的做法。

只有当异常是应用程序的正常(预期)操作的一部分时,才会出现这种情况。换句话说,如果一个例外是一个统计上常见的事件(例如,你期望它在某个地方“经常”发生),那么捕获它可能会产生巨大的性能成本。 (实际上,这只在很短的时间内才会发生很多例外情况,所以基准总是很重要的。)

因为您通常不希望资产在尝试访问时丢失(否则在您的应用程序中有错误的设计),在例外情况下使用异常处理程序是很好的。总而言之,使用异常进行错误处理具有性能成本,但错误(特别是要被抑制的错误)预计是罕见的事件。如果您希望在应用程序的某个部分中经常发生错误,那么在您的设计中可能会出现错误。 (如果情况并非如此,那么可能会出现一些非常特殊的情况,但这些非常罕见且非典型应用领域。)

实践中:就您的情况而言如果资产名称来自外部(例如,用户)输入,则使用例外是可以的。这是因为可能例外的“频率”很低。另一方面,如果你试图决定许多资产是否存在(例如循环),那么异常处理可能会带来不可接受的性能成本 - 但我很难想象会需要这样的事情。

+0

在我的应用程序的情况下,它实际上是在一个循环中,但它不是性能上的重击。现在发生的事情是我有一个音板,它有很大的音量(超过100)。每个声音都会显示其文件名称(减去.ogg),并将声音分割为“类别”文件夹。在应用程序中有一个微调器,玩家可以选择一个类别,并根据该文件夹中的文件填充声音列表。异常处理进入'收藏夹'列表。 –

+0

用户可以将声音添加到此列表中。列表被保存,稍后当他们选择它被填充的收藏夹类别时。由于我只有文件名称减去.ogg文件,所以在收藏夹文件夹中播放声音时,我必须搜索它。我得到一个目录列表并尝试每个目录,直到找到该文件。保存包含收藏夹列表中声音的文件夹名称不是一个选项,因为当包含该文件夹时,按钮格式看起来很糟糕。我认为有一个自定义按钮和侦听器的列表,但这似乎是一个相当长的啰嗦实现。 –

+0

我想我要做的是从每个目录中获取一个新列表,并确保该文件名存在于该目录中,如果该文件不是捕获异常,而是使用该文件,但仍然存在的功能会提高可读性实现。 –