区分: Exception/Error

Exception:Nonfatal. Caused by program or external environment. Can return to normal after processed.
For example: I/O Exception、Runtime Exception ……
Exception并不致命,程序能正确返回值,只不过不能达到正常使用目的。通常因程序、终端环境引起

Error: Fatal. Inner errors. Cannot return to normal, and interrupt the execution of the program to exit.
For example: JVM Error、Memory overflow Error…..、
Error很致命,导致程序中断,不能正常返回。

区分: Checked Exception/ Unchecked Exception

Checked Exception: 检查型异常,即编译器认为需要检查的异常。
该类异常:
1、难以避免,比如读取文件操作,假如文件不存在就抛出异常。
2、可以通过try catch语句处理。
3、编译器会强行要求程序员处理该异常。

Unchecked Exception: 非检查型异常。这类异常通常可以避免,比如数组越界。

try - catch - throw

    func()throws Exception {
        throw new Exception();
    }
    public static void main(String[] args) 
    {
        try {
            func();
            System.out.println("出错位置后代码");
        }catch(NumberFormatException formatEr) {
            System.out.println("出错:数据类型错误");
        }catch(Exception normalEr) {
            System.out.println("出错:未知错误");
        }finally {
            System.out.println("Finally is called");
        }
    }

注意: 如果函数中有throw语句:

  • 该函数在函数名之后添加: “throws Exception”
  • 调用该函数时,必须将函数包裹在try语句块内

  • 如果出现try,那么catch和finally必须出现一个。

  • throw不是必须的,因为系统会有默认throw。
  • throw后的语句不会被执行
  • finally块中的语句一定会被执行