篮球中的exception

本文介绍了Go语言中异常(Exception)的相关知识。异常分为checked exceptions、runtime exceptions和errors三类,checked exceptions可恢复,后两种通常无需捕获。还指出很多异常是不必要的,方法产生异常时不应改变调用对象状态,且异常描述要清晰。

  When used to best advantage, exceptions can improve a program's readability, reliability and maintainability. When used improperly, they can have the opposite effect.

  Playing basketball也一样,漂亮的假动作的确可以帅呆了我,但用得不合理则只能说是花哨而不实用了。

  Exception可分为三类,checked exceptions, runtime exceptions和errors。
  比如,盖帽时可能产生打手等exceptions,但这不会导致比赛就此不能进行。可以通过罚球来go on. 只是你的这次盖帽因犯规而无效,即不能得到你盖帽数增一的结果。这类exception称之为checked exception.

  而有时比赛过程中,可能同于球员比现实在是糟糕,而导致观众闹事(晕),比如向现场砸瓶子和水果,从而导致比赛意外中断。比赛能不能go on. 你也不能确定。这样便产生了一个runtime exception.

  还有一些情况,比如比赛时,电子记分牌突然产生一个exception.74分变成了47分,这时你也只好叹于无奈,因为这是一个error.

  由此看来,checked exceptions是可以恢复的,即可恢复条件下应该用checked exceptions,而后两种exceptions needn't并且通常shouldn't be caught. 其中runtime exceptions的出现意味着你的程序本身有问题,你可以通过改进球队的战术来解决。而errors是James Gosling的问题,不关你的事。

  Exceptions很有用,但很多情况的exceptions是unnecessary的。
  比如下面一个程序:
   while(没有防守){
     try{
       投篮();
     }catch(距离太远Exception e){
      System.out.println("距离远于10米,我可不想三不粘");
     }
     ...
   }
  这个程序可以正常运行,但如果Kobe在后场无人盯防时运球,却不得不停地抛出"距离太远exception",这还真够难为他的。改一下:
   while(没有防守){
     if(距离<5){
       投篮();
     }
     ...
   }
  这回Kobe只要睁着眼,一瞧篮框距离不远,便可起跳了。

  另外,一方法产生exception后,不应该改变调用该方法对象的状态。如下这个程序就犯了这个毛病:
   public void 盖帽(){
     盖帽次数++;
     if(打手)
       throw new 打手Exception();
   }
  这样一来,一场比赛得三双就容易了很多,呵呵。改成:
   public void 盖帽(){
     if(打手)
       throw new 打手Exception();
      盖帽次数++;
   }
  就行了。这个问题看似easy,却也是最容易犯错的地方。

  最后还有一个问题,也是一个最普遍和最严重的问题,那就是:exception没描述清楚.(地球人都知道啊^^)
  Ignoring an exception is analogous to ignoring a fire alarm--and turning it off so no one else gets a chance to see if there's a real fire.
  犯规时,一个裁判得如此描述:A队6号打手犯规,犯规次数累计共3次,并由B队罚球2次。否则,只闻一声哨响,双方球员争嚷,围住一球狂强,拳打脚踢真爽......

 

内容概要:本文围绕六自由度机械臂的人工神经网络(ANN)设计展开,重点研究了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程,并通过Matlab代码实现相关算法。文章结合理论推导与仿真实践,利用人工神经网络对复杂的非线性关系进行建模与逼近,提升机械臂运动控制的精度与效率。同时涵盖了路径规划中的RRT算法与B样条优化方法,形成从运动学到动力学再到轨迹优化的完整技术链条。; 适合人群:具备一定机器人学、自动控制理论基础,熟悉Matlab编程,从事智能控制、机器人控制、运动学六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)建模等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握机械臂正/逆运动学的数学建模与ANN求解方法;②理解拉格朗日-欧拉法在动力学建模中的应用;③实现基于神经网络的动力学补偿与高精度轨迹跟踪控制;④结合RRT与B样条完成平滑路径规划与优化。; 阅读建议:建议读者结合Matlab代码动手实践,先从运动学建模入手,逐步深入动力学分析与神经网络训练,注重理论推导与仿真实验的结合,以充分理解机械臂控制系统的设计流程与优化策略。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值