我的理解是事先测试以避免出现异常,而不是抓住它们,这是更好的做法。试图打开资产文件之前是否有任何方法检查资产文件是否存在?AssetManager.exists(String)等价吗?
1
A
回答
0
有没有这样的功能可用于资产,但是,它不需要它(见下文)。
我的理解是事先测试以避免异常,而不是抓住它们是更好的做法。
只有当异常是应用程序的正常(预期)操作的一部分时,才会出现这种情况。换句话说,如果一个例外是一个统计上常见的事件(例如,你期望它在某个地方“经常”发生),那么捕获它可能会产生巨大的性能成本。 (实际上,这只在很短的时间内才会发生很多例外情况,所以基准总是很重要的。)
因为您通常不希望资产在尝试访问时丢失(否则在您的应用程序中有错误的设计),在例外情况下使用异常处理程序是很好的。总而言之,使用异常进行错误处理具有性能成本,但错误(特别是要被抑制的错误)预计是罕见的事件。如果您希望在应用程序的某个部分中经常发生错误,那么在您的设计中可能会出现错误。 (如果情况并非如此,那么可能会出现一些非常特殊的情况,但这些非常罕见且非典型应用领域。)
实践中:就您的情况而言如果资产名称来自外部(例如,用户)输入,则使用例外是可以的。这是因为可能例外的“频率”很低。另一方面,如果你试图决定许多资产是否存在(例如循环),那么异常处理可能会带来不可接受的性能成本 - 但我很难想象会需要这样的事情。
相关问题
- 1. View.getTranslationX/Y()等价吗?
- 2. wxPython Application.DoEvents()等价吗?
- 3. HiveQL - String在hiveql UDF中包含等价物吗?
- 4. Int32.TryParse等同于String吗?
- 5. C++等价的Java Map <String,Object>
- 6. GetTimeZoneInformation在Ubuntu中等价吗?
- 7. UIBarButtonSystemItem在Android中等价吗?
- 8. DOMNodeInserted DOMNode与MutationObserverRemoved等价吗?
- 9. SqlBulkCopy在MySql中等价吗?
- 10. NHibernate QueryOver与HQL等价吗?
- 11. BindAsEventListener在jQuery中等价吗?
- 12. java.text.DecimalFormat中的%g等价吗?
- 13. GWT中的request.getRemoteUser()等价吗?
- 14. Angular中的getElementById等价吗?
- 15. Vector2在C++中等价吗?
- 16. Isabelle等价于Haskell newtype吗?
- 17. str_shuffle()在JavaScript中等价吗?
- 18. Go的setdefault等价吗?
- 19. DidReceiveRemoteNotification在Android中等价吗?
- 20. JDB中的GDB'start'等价吗?
- 21. GetWebResourceUrl与ASP.NET MVC等价吗?
- 22. strptime()在Windows上等价吗?
- 23. Application.DoEvents()在Java中等价吗?
- 24. PHP等价于Perl行吗?
- 25. C++:Chr()和unichr()等价吗?
- 26. Python中的inject()等价吗?
- 27. JToken价值为String
- 28. top.location.href与redirect_to或render等价吗?
- 29. 与Lazyboy的pycassa ColumnFamily.get_range()等价吗?
- 30. ,与javascript real xml函数等价吗?
在我的应用程序的情况下,它实际上是在一个循环中,但它不是性能上的重击。现在发生的事情是我有一个音板,它有很大的音量(超过100)。每个声音都会显示其文件名称(减去.ogg),并将声音分割为“类别”文件夹。在应用程序中有一个微调器,玩家可以选择一个类别,并根据该文件夹中的文件填充声音列表。异常处理进入'收藏夹'列表。 –
用户可以将声音添加到此列表中。列表被保存,稍后当他们选择它被填充的收藏夹类别时。由于我只有文件名称减去.ogg文件,所以在收藏夹文件夹中播放声音时,我必须搜索它。我得到一个目录列表并尝试每个目录,直到找到该文件。保存包含收藏夹列表中声音的文件夹名称不是一个选项,因为当包含该文件夹时,按钮格式看起来很糟糕。我认为有一个自定义按钮和侦听器的列表,但这似乎是一个相当长的啰嗦实现。 –
我想我要做的是从每个目录中获取一个新列表,并确保该文件名存在于该目录中,如果该文件不是捕获异常,而是使用该文件,但仍然存在的功能会提高可读性实现。 –