C#学习系列之throw new ApplicationException

C#学习系列之throw new ApplicationException


在这里插入图片描述

啰嗦

在项目的解码过程中使用到throw new ApplicationException语句,之前一致没有意识到这句话会带来很多问题。项目中使用这句话来捕捉解码过程中的解码异常问题。


问题

在使用throw new ApplicationException(GetErrorMessage(error));中,是用throw来捕捉解码中出现的解码问题,会进行解码提示。每次当出现Error parsing NAL unit #0.解码问题时,捕捉到异常会直接跳出整个循环,直接跳出到循环外的try catch finally中的catch,直接跳出解码线程,导致无法再启动线程。如果使用while不断循环,这里的解码退出后会不断开辟解码运行流程,但是无法流畅播放。

解决

throw new ApplicationException(GetErrorMessage(error));使用break;进行替代!
在这里插入图片描述
解决思路是参考了H264的海思解码,在解码过程中,始终不跳出解码原本的while循环,最多break而已的思路。
从实际使用效果看,再出现相同的解码异常,不会跳出解码异常,并且不用考虑重启解码线程。


总结

这个问题困惑我很久,一直在考虑是否从Error parsing NAL unit #0.着手,其实也没有很好的思路。在一遍遍的debug中反复跑异常,才意识到可以换个思路解决问题。通过查阅264解码,验证自己的思路可能没有没有,加上不断尝试。
在反反复复回放,解码异常十多遍后,静下心来想问题,这个问题解决了。虽然可能对大家来说是很小的问题,对我来说,是继续努力的动力,加油!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值