java的方法、重构,调试、异常处理机制总结

  • if-else:基于Boolean的双分支
  • switch-case:基于数字(整数、char、枚举、byte)、字符串类型的多分支
  • 方法
    • 方法不是必须的,但是方法体现的是模块化编程思维,是高级语言拥有的特性
    • 方法的签名:方法名称+参数列表(参数有严格的顺序) 注意无关返回值,java是根据签名区分到底调用那个方法
    • 方法命名:简明知意:简单明了,一看就知道含义
    • 一个类里面不能有两个签名相同方法
    • 方法参数的传递,实际上由参数的类型决定(参数类型:基本类型、引用类型)也叫传值和传址
    • 方法的重载:是从面向对象的多态的一种体现,只要求方法签名不同
    • 方法的重写:是从面向对象中继承和派生的角度考虑,只要求子类重新改写父类方法的方法体,但返回值和方法签名不变
  • 重构之提取方法
    • 将某一段代码抽取出来,构成方法,Eclipse快捷键shift+alt+M
    • 作用:使用模块化、单一职责,功能拆分等思想,避免代码过于冗长导致的难以阅读和维护
  • 程序调试
    • 通过调试可以观察程序的执行过程和内部数据(断点和单步执行功能是由jvm和CPU联合支持的)
    • 断点:程序执行到这个位置会停下来。【单步执行F5(进入方法),F6(跳过方法)】
  • 调用栈:栈是一个只有一个口的容器,即栈顶,先进后出,方法调用时会在内存开辟一块存储空间,作为当前线程的栈空间。每个线程都有自己的调用栈
    • 调用一个方法时会向栈压入一个栈帧,用于存储这个方法的参数和局部变量,称为进栈
    • 返回时,栈帧会弹出,相应的参数和局部变量也会被清除,称为出栈
    • 如果调用层级过深,可能会发生栈溢出,尤其是执行递归运算的时候
    • 程序的执行速度很快,所以栈帧的生存时间极短,栈波动频繁,这也就使得栈内保存的局部变量来不及被外界使用就被销毁了 ,栈的这种特性使得局部变量无法被外界调用



  • 异常处理机制
    • 异常处理(try/catch)和异常传递(throws)以及手动抛出异常(throw)
    • 受查异常:受到检查的异常,必须传递出去(throws)或者处理掉(try/catch),不能忽略
  • 异常捕获过程
    • 当程序执行到try块时会在出错点之前建立一个安全点,
    • 一旦try块中发生错误,jvm就会检查并收集错误信息(错误的原因类型,位置,当前栈结构),然后利用这些信息创建一个Exception对象(类型取决于错误的原因)并抛出,这时runtime system得到一个异常类,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。
    • 可以通过这个异常对象相应的方法获取对应的异常信息(尝试阅读异常信息排查错误)
    • try块中,从出错位置开始到catch上面的这段代码不会执行,但finally 块无论怎样都会执行

    • 只要类型匹配就被捕获。但是子类异常优先放置在最内层,父类异常放置在外层,使得捕获的异常更准确
    • 出现异常时,jvm会扫描栈,查找try建立的安全点,直到找到该点(然后交由匹配的catch块处理),若找不到而到达栈底则程序崩溃
    • catch是一个异常匹配过程,只有类型匹配成功才会捕获异常,否则异常会抛给方法的调用者。
  • 异常的分类
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值