错误和异常的处理在真正落地、上线的应用中非常重要。
在 fijkplayer 中,我尽量让错误和异常处理变得简答,并且具有统一的原则和规范。
原则
对于 dart 中的 Error
和 Exception
的关系,我比较认同 这一说法。
翻译过来就是:
Error
和其子类用于代码错误,如果出现了Error
,说明您的代码出错了,您应该修复您的代码。
Exception
和其子类用于运行时的错误。你可以通过一些方法避免抛出异常,但是还有很多情况下你无法避免异常的出现。
在 fijkplayer 中,也遵循这样的理念,并且严格定制了关于错误和异常的规范。
- fijkplayer 的 api 会检查参数有效性和内部状态,如果出错立即抛出
Error
。 - fijkplayer 中出现的异常情况都以异步的形式出现,并且作为
FijkValue
的字段在值发生变化时通知订阅者。 - fijkplayer 中的播放器相关 exception 都是
FijkException
或其子类的实例。 - fijkplayer 中
FijkException
不会被抛出,所以不需要捕获。 - fijkplayer 中其他抛出的
Exception
会明确在 api 文档中指明。
实际上,FijkException
都是对 ijkplayer 中播放器进入 error
状态原因的一个说明。
如果出现 FijkException
,那么 FijkPlayer
肯定也进入了 error
状态。当 FijkPlayer
离开 error
状态时,异常也被清空。
处理响应
正确的使用 fijkplayer 的 api 不会抛出 Error
。如果出现 Error
,请检查您的代码是否出现逻辑错误。当然,也不能排除 fijkplayer 中出现 bug。
如果出现无法解决的 api 调用抛出 Error
问题,请在 github issues 中进行提问。
在 fijkplayer 中,目前没有引入 FijkException
之外的任何异常。并且 FijkException
是不会抛出的。所以不需要异常处理函数 app 也不会因为 fijkplayer 而导致崩溃。
但是一旦出现 FijkException
意味着播放器处于 error
状态,你应该显出错误信息,或者关闭播放器。
本节完,就是这么简单。😄