Java -- 异常处理机制,final,finally和finalize

一 异常(Throwable)?

1 运行时出现的非正常现象

在这里插入图片描述

2 性质分类

错误(error)和异常(Exception)都继承Throwable

3 区别:

Error 不可控,系统错误,或底层资源错误,系统级别捕捉
Exception 可能可控,程序员导致的错误,程序级别处理

4 异常处理关键字

try–catch–throw–throws–finally

4.1 try–catch-finally,代码块内部,不能单独使用,必须有try,分别独立 不能相互访问
4.2 可以多catch,类似于switch case
4.3 throw,方法体内部,用来抛出一个Throwable异常,如果抛出异常,则还应该在头部声明,也就是需要在方法上声明throws(见下),如果全部是层层上抛,最终会给JVM处理,打印异常信息和堆栈信息,如果抛出Error或RunTimeException,则调用者可以处理该异常。
4.4 throws,方法体外部,用来声明方法可能会抛出的一个异常,只有抛出异常,方法的调用者才回去处理或者重新抛,当方法调用者处理不了,则继续向上抛出
在这里插入图片描述

5 常见异常问题

5.1 庞大的try块

根据实际应用合理检测异常个数

5.2 异常的完整性

如果抛出(throw)一个异常,那么必须有catch来捕获它,如果函数内部不进行catch处理,那么就必须在方法体中标注(throws)这个异常。这个意思是对外表示我这个方法可能会抛出这个异常。

5.3 RuntimeException

可以由程序员避免:空指针,数组越界,除数为0,非法参数,强转错误

二 关键字区分 final,finally和finalize

1. final

不可被修改,继承

1.1 定义变量
  • 初始化在定义出或者构造函数中,只取其一
  • 两层含义
    对于基本类型,数值不可修改
    对于对象变量,引用不可修改
1.2 定义方法

原因是因为这个方法不需要被扩展,所以不支持继承

1.3 定义类

final类不可被继承,
类内方法也为final方法
类内变量,可以使final,也可以不是
不能声明abstract(抽象)

2. finally

  • 异常处理语句,可有可无
  • finally结构代码在异常处理时总会执行
  • 可以维护对象内部状态,清理费内存资源

3. finalize

  • 方法名,在Object类中定义,所以所有的类都继承了他
  • 在垃圾回收机制清除内存前做必要的清理工作
  • 只能运行一次
  • 用于一些不容易控制,而且非常重要的资源释放
    程序本身释放为主,finalize函数释放为辅,双保险管理
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值