Java异常:阻止当前方法或作用域继续执行
- 异常后会发生:使用new在堆上创建异常对象,当前执行路径被终止,并从当前环境下弹出对异常信息的引用,由异常机制接管程序
- 所有标准异常类都有两个构造方法,默认和接受字符串
- 异常声明:属于方法的一部分,紧跟在形式参数类表后面
- Exception是所有异常类的基类,可以调用它从基类Throwable继承的方法
- getMessage() getLocalizedMessage() 获取详细信息
- toString 获取Throwable的简单描述
- printStackTrace() 打印调用栈轨迹
- getStackTrace() 返回一个由栈轨迹构成的数组,栈顶元素是调用序列最后一个方法调用
- 标准异常:Throwable表示可以作为异常被抛出的类
- Error:表示编译和运行时错误
- Exception:可以被抛出的基本类型
- RuntimeException:
- 属于运行时异常的类型很多,他们会被Java虚拟机抛出,不需要在异常说明中标明,属于不受检查异常
- 将被自动捕获,如果没有在代码中捕获RuntimeException,异常将会直达main(),并将其输出到System.err
- 只能在代码中忽略RuntimeException类型的异常,其他异常都是由编译器强制实施的
- 使用finally进行清理:
- 当要把除了内存之外的资源恢复到原始状态时,如已经打开的文件或网络连接
- finally中内容总是会执行,即使在前面先是使用了return
- 异常丢失:在finally中抛出的异常,将会覆盖前面的异常
异常的限制: - 覆盖的方法,只能抛出那些在基类中说明的异常
- 对于子类的构造方法,需要包涵基类构造方法的异常,同时可以新增异常
- 异常匹配:抛出异常时,异常处理程序会按照代码编写顺序查找最近的处理程序,然后就不再查找