`
shaucle
  • 浏览: 21557 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

篮球中的exception

Go 
阅读更多

Note:First posted on about 2004年3月

/*
 * @deprecated too old, just for fun.
*/

---------------------------------------------------

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次。否则,只闻一声哨响,双方球员争嚷,围住一球狂强,拳打脚踢真爽......

 

分享到:
评论

相关推荐

    exception 异常处理 exception

    Java中的异常体系主要分为两大类:`Error` 和 `Exception`。 - **Error**:通常表示系统级的错误,例如内存不足等,这类问题程序员通常无法避免,也不应该去处理。 - **Exception**:表示可以通过程序设计来避免或...

    exception C++ & More exception C++

    在C++编程语言中,异常处理(Exception Handling)是一个至关重要的概念,它允许程序员优雅地处理程序运行时发生的错误情况,而不是让程序崩溃。"Exception C++ & More Exception C++"可能是指两本关于深入理解和...

    Eclipse运行TOMCAT 出现在a java exception has occurred的解决办法。

    解决"a java exception has occurred"的方法非常简单,只需要在Eclipse中添加tomcat-ujli.jar到classpath中即可。下面是添加tomcat-ujli.jar的步骤: 1. 在Eclipse中双击TOMCAT SERVER,出现"Edit launch ...

    java Exception

    ### Java中的异常处理详解 #### 一、异常基础概述 在Java编程中,异常处理是一项重要的机制,用于处理运行过程中可能发生的错误情况。通过合理的异常处理,可以显著提高程序的健壮性和可用性。 ##### 1. 异常概念...

    Android Native Exception

    理解Native Exception的发生机制及其处理流程对于诊断和解决Android应用中的底层问题至关重要。 #### 二、Native Exception流程 **1. Native Exception Flow** 当Native代码中发生异常时,会触发一系列的内部流程...

    Exception Application for MFC

    eAppRAISE宏用于抛出异常,其参数Exception-ID是一个标识符,用于区分不同类型的异常,方便在catch语句中进行特定异常的处理。 【ExceptionApp的高级应用】 ExceptionApp提供了诸如内存分配宏、调试模式下的异常...

    error与Exception的区别

    在编程世界中,错误处理是不可或缺的一部分,Java和许多其他编程语言中,"error"和"exception"这两个术语经常被提及。理解它们之间的区别对于编写健壮和可靠的代码至关重要。 首先,我们来看"error"。在Java中,`...

    throwable 和 exception区别

    java Exception中Throwable和Exception之间的区别

    捕获Throwable和捕获Exception的区别验证

    当我们在`catch`块中捕获`Exception`时,实际上捕获的是所有`Exception`类及其子类的实例。这意味着像`NullPointerException`、`IOException`等常见的异常会被捕获,但是`Error`类及其子类(例如`OutOfMemoryError`...

    ExceptionEx

    这个基类通常是为了扩展C++标准库中的`std::exception`,增加额外的功能,比如包含抛出异常时的行号、文件名或者函数名称等。 在`ExceptionEx.cpp`和`ExceptionEx.h`这两个文件中,我们可能看到以下内容: 1. `...

    Uncaught DOMException:

    标题“Uncaught DOMException:”通常出现在JavaScript编程中,指的是在执行代码时遇到了一个未捕获的DOM(Document Object Model)异常。这个错误通常意味着在访问或操作DOM元素时发生了问题,可能是由于尝试访问不...

    JAVA 自定义异常 Exception

    自定义异常是在Java中通过继承`java.lang.Throwable`或其子类(如`Exception`或`Error`)来实现的。通常,我们选择继承`Exception`类,因为它用于表示程序可以恢复的错误,而`Error`则用于表示系统级的严重问题,...

    Oracle Exception汇总(自定义Oracle异常)

    为了避免程序中断,可以使用`EXCEPTION WHEN NO_DATA_FOUND THEN`来捕获并处理这个异常。 2. **TOO_MANY_ROWS** (ORA-01422): 当`SELECT INTO`语句返回多于一行数据时,会出现此异常。在处理时,通常需要修改查询以...

    解决Handler processing failed; nested exception is java.lang.NoClassDefFoundError_kmode exception

    nested exception is java.lang.NoClassDefFoundError_kmode exception" 指出的问题,是Java开发中常见的错误,通常发生在运行时。这个错误表明系统在尝试执行某个类时找不到对应的类定义。`NoClassDefFoundError` ...

    ExceptionLog

    "ExceptionLog"是一个针对开发过程中的异常处理工具,它的主要功能是记录和分析在软件开发过程中出现的错误信息。在编程中,异常是程序运行时遇到的问题,可能导致程序崩溃或产生不可预见的结果。ExceptionLog的存在...

    Checked and Unchecked Exception

    在这个例子中,如果 `b` 为零,会抛出 `ArithmeticException`,这是一个未检查异常,编译器不会强制要求处理它,但如果不处理,程序会在运行时崩溃。 **源码与工具** 了解异常处理机制的源码可以帮助开发者深入理解...

    异常日志捕获ExceptionLog

    标题提到的“异常日志捕获ExceptionLog”是一种常见的实践,旨在记录应用运行过程中的错误和异常信息,以便后续分析和调试。 在AndroidManifest.xml文件中,我们通常会在`&lt;application&gt;`节点下添加自定义的应用类...

    Oracle_存储过程exception异常处理大全及实例经典最终.docx

    3. **处理异常**:在程序的 `EXCEPTION` 块中编写异常处理代码。例如: ```plsql EXCEPTION WHEN first_exception THEN -- code to handle first exception WHEN second_exception THEN -- code to handle second...

    java开发exception部分

    java development part of exception

Global site tag (gtag.js) - Google Analytics