耶和华神吩咐他说:“园中各样树上的果子,你可以随意吃,只是分别善恶树上的果子,你不可吃,因为你吃的日子必定死。” 

《创世记》 2:16-17

"生命诚可贵,爱情价更高。若为自由故,两者皆可抛。" 诗人告诉我们自由是这个世界上最美好的东西。上帝创造亚当时,没有把他造成一个机器人,而是给了他一定的自由,即可吃、可不吃分别善恶树上的果子。如果当时亚当没吃的话,恐怕我现在不会在这敲代码,你也不会在这看我的文字。可是经上毕竟记着,亚当吃了,在上帝看来这就是犯罪。全能全知的上帝,或许早就知道会有这样的情况,做了两手准备。如果亚当和夏娃犯了罪,就会惩罚他们,并且预备了救恩,即如经上所说,耶稣道成了肉身,来到人间,被钉十字架,用他的宝血洗去了人类的罪。
用编程的思维来理解,这就是程序中的异常。程序启动了,理想情况是一直往下面运行,直到结束,期间不出现任何什么差错。然而,正如这个世界是不完美的,程序是对现实世界的模拟,因此程序也难以做到尽善尽美。再说,人是不完美的,不完美的人能写出完美的程序来吗?

程序语言翻译

先定义一个犯罪的异常,如果亚当吃了分别善恶树上的果子,就抛出这个异常,并捕捉这个异常进行处理。当然,这种犯罪的异常大概只有人生的程序中才有,定然不会出现在实际的项目开发中。在实际开发中,更多的是诸如操作文件时,找不到文件的异常、或取数组中的数据时下标越界的异常、或连接网络时无法连接的异常等。

代码清单1:CrimeException类源代码

package crimeException;

/** * 亚当有吃不吃禁果的自由,吃了就犯了罪,要抛出异常。 */ public class CrimeException extends Exception {

public CrimeException(String message) {
    super(message);
}

}

亚当本来是在伊甸园里呆的好好的,和夏娃过着小两口的甜蜜日子,可惜因为蛇的引诱,吃了不该吃了果子,犯了罪,抛出了犯罪的异常,并且异常被捕捉,上帝进行了一系列的处理。同样的,在切实的开发中,如果程序有可能发生异常,其一应该抛出,这样有利于往后的系统维护;其二,最好对异常有指定的相应处理,这样可以提高系统的稳定性、健壮性。

代码清单2:Adam类源代码

package crimeException;

/** * 伊甸园里的亚当 * */ public class Adam {

/**
 * 是否吃了禁果
 * @return
 */
public static boolean hasEatTheForbiddenFruit(){

    //蛇引诱夏娃和亚当吃了禁果,所以返回true
    return true;
}

public static void main(String[] args){

    System.out.println(" 耶和华神吩咐他说,园中各样树上的果子,你可以随意吃。"+
            " 只是分别善恶树上的果子,你不可吃,因为你吃的日子必定死。 (创世纪2:16-17)");


    try{
        //如果亚当吃了分别善恶树上的果子,抛出犯罪的异常,并进行处理
        if(Adam.hasEatTheForbiddenFruit() == true){

            throw new CrimeException("亚当吃了分别善恶树上的果子,犯罪了!!!");

        }else{

            //如果亚当没有吃分别善恶树上的果子
            System.out.println("如果亚当没有吃分别善恶树上的果子,呵呵,我也不知道会是什么结局。"
                    +"或许我现在在伊甸园里,不会在这敲代码。或许根本没有我。");
        }


    //捕捉亚当犯罪的异常
    }catch(CrimeException exception){

        //如果亚当吃了分别善恶树上的果子,要进行一系列的处理。
        System.out.println(exception.getMessage());
        System.out.println("1、被赶出伊甸园,受惩一系列的惩罚。");
        System.out.println("2、预备救恩:耶稣道成了肉身,来到人间,被钉十字架。");
    }

}

}