Java小白的第十九课一一异常

回顾

  1. 深克隆: 不仅只克隆了实现克隆接口的对象本身,也会把克隆对象中存在的关联对象一起克隆。
  2. finalize(): 每个对象上都有,且由垃圾回收器调用的。当垃圾回收器发现一个对象长时间没有引用,就会去调用该对象的finalize方法进行回收。
  3. 日期时间对象Date掌握获取当前系统时间的功能,在JDK1.1之后推荐使用Calender类。
  4. Date 和Calender可以互相转化,getTime()Calender转Date,setTime(),Date转Calender。
  5. SimpleDatefomat辅助类(创建对象时, 有参构造放的是格式yyyy年MM月dd日 HH时mm分ss秒

1.异常处理

1.1 常见异常

  1. java.lang.NullPointerException 空指针异常
  2. ArrayIndexOutOfBoundsException 数组异常
  3. java.lang.AirthmeticException 算术异常
  4. java.lang.ClassCasExcepiton 类型转换异常

1.2 try-catch-finally

1.2.1 try-catch

try{
//监视的代码块
}catch(异常){
//捕获异常
}finally{
// 不管是否有异常发生,finally语句块中的语句始终保证被执行
//finally语句块儿主要用于解决资源泄露问题
}

例如

try{
    System.out.println(((String)null).length())
    //null调用方法会报错
}catch(Exception e){
    System.out.println(e);//空指针异常
}

注意: try的后面可以有多重catch,但是注意层级关系: 越高越往下写。
① try catch
②try 多个catch
③try...finally
④try catch finally

1.2.2 finally块

①finally前有return,finally依然被执行
②finally块前有System.exit(0)语句,finally不被执行

1.3 throw 和 throws

1.3.1 throw

  • 手动引发异常,发生在 方 法 体 中 \color{#ff0036}{方法体中} (我认为满足特定的条件就是发生异常了);
    throw

1.3.2 throws(抛出异常)

  • throws 用在 方 法 声 明 处 \color{#ff0036}{方法声明处} ,声明该方法可能发生的异常类型。
  • 一个方法如果使用了throws,那么 调 用 \color{#ff0036}{调用} 该方法时,编译期会提醒 必 须 处 理 \color{#ff0036}{必须处理} 这些异常,否则编译错误;
    throws
    异常一直向上抛,最顶点就是JVM
    throws后可以声明多种类型,用逗号隔开即可;
    throws

1.4 自定义异常

1.4.1 意义:

  • 为了能够标记项目中的异常事件,需要用throw抛出异常;
  • 如果抛出的是API中的标准异常,那么很有可能与 API中方法混淆,因此需要自定义异常。
  • 项目组根据业务需求定义业务异常,对团队开发非常有意义。

1.4.2 声明自定义异常

  • 创建个自定义异常类:

    1. 自定义异常非常简单,只要继承API 中任意一个标准异常类即可;
    2. 多数情况下,继承,Exception类,也可以选择继承。其他类异常。
    3. 一般不写其它方法,只重写必要的构方法。
      在这里插入图片描述
  • 自定义异常类的使用
    在这里插入图片描述
    结果
    在这里插入图片描述
    **处理:**使用throws声明自定义异常类,使用try-catch-finally处理
    在这里插入图片描述


1.5 异常小结

Throwable
Error
Exception
RuntimeException
检查异常

异常可以处理不影响程序运行,错误只能修改代码。
检查异常:不可预见的,码代码的时候,就报红提示
运行时异常: 可以预见的,编译器不报红,运行起来就报错。
错误: 错误不是异常,而是脱离程序控制的问题。
所有的异常全继承于java.lang.Exception类

  1. 分类: 编译和运行

  2. Exception 异常: 一般是逻辑或者数据内容

  3. 所有语言都需要异常处理,针对的是运行期。

  4. 处理异常的意义: 预会准备,避免程序因异常而终止。

  5. Exception有四个子类

    • SQLException 数据库异常
    • ClassNotFountdException 找不到类
    • IOException 流异常
    • RuntimeException 运行期异常
  6. 运行异常的常见子类

    • ArthmeticException 算术异常
    • lllegalArgumentException 方法收到不合法的参数
    • NullPointerExoption 不能加载所需类
  7. 异常处理

try{
    //监视错误
}catch(Exception e){
    //异常处理
}finally{
    // 总是执行
    // try或catch中有return也不能阻止finally运行
    // System.exit(0) 可以阻止
}

1.6 面试题

  • Exception和Error
    • 都继承于Throwable
    • Exception 异常 : 可以被控制,是运行过程中的不正常事件,可以被异常处理机制处理,程序能够运行下去。
    • Error 错误 jvm底层问题,不能被处理,强制终止程序,需要改代码才能修改的错误。
  • try catch finally的区别
    • try 监视错误
    • catch 捕获错误
    • finally 总会执行 finally是可选的,且必须,和try塔配使用。
  • final finalize finally的区别
    • final 最终的 修饰变量的时候值不能被修改且必须初始化;修饰方法时不能被重写;修饰类时不能被继承;
    • finalize 每个对象都有,当垃圾回收器发现一个对象长时间没有引用那么就会调用对象上的 finalize方法。
    • finally块 必须搭配try使用,无论try中是否有异常,都会执行。只有System.exit(0)会阻止finally的运行。

2.断言

2.1 断言的作用

JDK1.4之后,增加断言机制。用来调试程序,不在生产环境下使用。

2.2 断言的使用

assert 布尔表答式 : 错误信息;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值