请问一个简单的问题,JAVA的异常技术抛出的异常是在编译时抛出的,还是在运行时抛出的??

解决方案 »

  1.   

    编译出错,是因为合理而不和法的原因,比如1/0,人算可以记作正无穷,但是机器不会且对于机器也没有意义.根本原因是现代计算理论模型的不完备性,桌面PC,甚至巨型机,能计算的前提是当且仅当所计算的对象是有穷递归的.
    异常抛出,是合理且合法并可控的原因,这是一个设计,也就是说,你可以在你任何你想抛出地方抛出,且,在你想获得的地方获得.所以必然是在运行时抛出.个人认为,异常的设计,是为了缓和缺少了GOTO而产生的压力.
      

  2.   

    如果直接的throw出一个异常的情况下一般在编译的时候就会检测的了。但是RuntimeException的话就不会
      

  3.   

    Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。 这是中文API上的话,通过 Java 虚拟机或者 Java throw 语句抛出,这就是说,异常都是在运行时产生并抛出的.
      

  4.   


    编译时,运行时都可能抛出异常运行时异常:特点是java编译器不会检查它,也就是说,当程序中可能出现这类异常时,即使没有用try..catch语句捕获它,也没有用throws自居声明抛出他,还是会编译通过,例如a/b ,b的值为0编译时异常:特点是java编译器会检查它,也就是说,当程序中可能出现这类异常时,要么用try...catch
    语句捕获它,要么用throws子句声明抛出他,否则编译不会通过
    两者的区别是;编译时异常表示程序可以处理的异常,运行时异常表示无法让程序恢复运行的异常