1. 异常发生的原因
    1. 用户输入了非法数据。
    2. 要打开的文件不存在。
    3. 网络通信时连接中断,或者JVM内存溢出
  2. Throwable
    1. Error
    2. Exception
      1. 所有的异常类是从 java.lang.Exception 类继承的子类
      2. Exception 类是 Throwable 类的子类
      3. 比如:IOException,RuntimeException
  3. 捕获异常
    1. try/catch
      1. try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }
    2. throws/throw
      1. 如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明
      2. throws 关键字放在方法签名的尾部
      3. 也可以使用 throw 关键字抛出一个异常
      4. 一个方法可以声明抛出多个异常,多个异常之间用逗号隔开
    3. finally
      1. finally 关键字用来创建在 try 代码块后面执行的代码块。
      2. 无论是否发生异常,finally 代码块中的代码总会被执行。
      3. 在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。
      4. finally 代码块出现在 catch 代码块最后
      5. try{ // 程序代码 }catch(异常类型1 异常的变量名1){ // 程序代码 }catch(异常类型2 异常的变量名2){ // 程序代码 }finally{ // 程序代码 }
  4. Throwable
    1. public String getMessage()
      1. 返回关于发生的异常的详细信息
    2. public void printStackTrace()
      1. 打印toString()结果和栈层次到System.err,即错误输出流