编译时异常和运⾏时异常的区别
最简单的说法:
javac出来的异常就是编译时异常,就是说把源代码编译成字节码(class)⽂件时报的异常,⼀般如果⽤Eclispe,你敲完代码保存的时候就是编译的时候。编译器错误
出来的异常就是运⾏时异常
Java异常可分为3种:
  (1)编译时异常:Java.lang.Exception
  (2)运⾏期异常:Java.lang.RuntimeException
  (3)错误:Java.lang.Error
Java.lang.Exception和Java.lang.Error继承⾃Java.lang.Throwable;
Java.lang.RuntimeException继承⾃Java.lang.Exception.
编译时异常:程序正确,但因为外在的环境条件不满⾜引发。例如:⽤户错误及I/O问题----程序试图打开⼀个并不存在的远程Socket端⼝。这不是程序本⾝的逻辑错误,⽽很可能是远程机器名字错误(⽤户拼写错误)。对商⽤软件系统,程序开发者必须考虑并处理这个问题。Java 编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
运⾏期异常:这意味着程序存在bug,如数组越界,0被除,⼊参不满⾜规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。
错误:⼀般很少见,也很难通过程序解决。它可能源于程序的bug,但⼀般更可能源于环境问题,如内存耗尽。错误在程序中⽆须处理,⽽有运⾏环境处理。
顺便说⼀下:编译期和运⾏期的区别
编译期和运⾏期进⾏的操作是不相同的,编译器只是进⾏语法的分析,分析出来的错误也只是语法上的错误,⽽运⾏期在真正在分配内存··
⽐如说你写⼀个while循环,⼀直往栈⾥写,编译器是不会出错的,可是运⾏期就会出现栈满的错误··