异常

1).了解异常的概念
2).理解异常的作用
3).掌握常见的异常
4).掌握异常体系结构
5).掌握异常的处理
6).掌握异常的抛出与捕获
7).了解自定义异常
1、什么是异常
 异常类通常用来定义程序在运行过程中遇到的轻微意外,可以写代码来处理异常并继续程序执行,而不是让程序中断。
2、异常机制的作用
1).健壮性
2).交互性
3、常见异常
NullPointerException:非法使用空引用
ArithmeticException:算术错误,如被0除
ArrayIndexOutOfBoundsException:数组下标出界
IndexOutOfBoundsException:某些类型索引越界
NumberFormatException:字符串到数字格式非法转换
ClassCastException:非法强制转换类型
ClassNotFoundException:类找不到-编译时异常
FileNotFoundException:文件没有找到-编译时异常
SQLException:数据操作异常(操作数据库时常见异常)
...
4、异常体系结构-PPT
Object<-Throwable<-Error
                 <-Exception<-RuntimeException(编译时异常)
    <-运行时异常
Exception是所有异常类的父类
异常体系结构说明:
Error :JAVA程序运行过程中如果出现了错误,错误是不能处理的,
                只能退出JVM。
例如:StackOverflowError,运行时磁盘空间不够,内存不够。。。

Exception :是可以处理的。如果没有处理异常,则程序直接退出
                          JVM虚拟机。只有处理了程序才能继续执行!
5、异常类Exception
       构造函数
它从Throwable类那里继承了若干方法。
常用的为:
public String toString():返回异常类信息
public void printStackTrace():在当前标准输出上输出异常信息
        getMessage();

编译时异常和运行时异常(RuntimeException)的区别:
     编译时异常:常指程序在编写时就会发生的异常,必须使用try...catch进行处理
     运行时异常:指程序在运行时发生的异常,可以不使用try..catch进行处理。但是为了保证程序的健壮性,建议在有可能发生异常的地方还是使用try..catch 处理
6、异常处理
Java的异常处理是通过5个关键字来实现的:
  try  catch finally throw  throws 
1).try/catch
try 
{
                // 可能异常的代码段
        }
catch (异常类型 ex) 
{
            // 对异常进行处理的代码段
}
        // 代码段
使用try/catch块捕获异常,分为三种情况:
第一种情况:
try {
      // 代码段1(此处不产生异常)
} catch (异常类型 ex) {
      // 对异常进行处理的代码段
}
// 代码段5
注:如果没有产生异常,则会继续执行,代码段5会执行

第二种情况:
try {
      // 代码段 1
      // 产生异常的代码段 2
      // 代码段 3
} catch (异常类型 ex) {   //异常类型匹配
      // 对异常进行处理的代码段4
}
// 代码段5  //会执行
注:代码段1先执行,运行到代码段2时产生异常,则代码段3不会执行,
直接捕捉代码段2的异常,若处理成功,则代码段5会继续执行

第三种情况:
try {
     // 代码段 1
     // 产生异常的代码段 2
     // 代码段 3
} catch (异常类型 ex) {  //异常类型不匹配
     // 对异常进行处理的代码段4
}
// 代码段5
注:代码段1会执行,运行到代码段2时产生异常,代码段3不会执行,
而是直接跳到捕捉异常,若处理不成功,则会出现错误,代码段5不会继续执行

2).try/catch/finally
面试题:谈谈final,finalize,finally的区别。
 
final用于声明属性,方法,类,分别表示属性不可变,方法不能被重写,类不能被继承。
finalize是Object类的子类,在垃圾回收机制里起作用
finally 一般会和try..catch配套使用,不能单独使用,里面的代码一定会执行。

3).多重catch块
try {
     // 代码段
     // 产生异常(异常类型2)
} catch (异常类型1 ex) {   //与异常类型1不匹配
     // 对异常进行处理的代码段
} catch (异常类型2 ex) {  //与异常类型2匹配
     // 对异常进行处理的代码段
} catch (异常类型3 ex) {
     // 对异常进行处理的代码段
}
// 代码段
注意:在使用多catch语句时,记住异常子类必须在他们的任何父类之前使用
补充:JAVA异常处理机制【面试题】
   在整个JAVA 的异常处理中,实际上也是按照面向对象的方式进行处理的,处理的步骤:
   1、一旦产生异常,则首先会产生一个异常类的实例化对象,
   2、产生的异常对象与catch语句中的各个异常类型进行匹配,。若匹配成功,则执行catch语句中的代码
7、异常的抛出:
两种方式:
    ①在【方法头】写出需要抛出的异常(利用throws语句),用throws声明的方法表示此方法不处理异常。而是抛到方法的调用处进行处理
    ②在【方法体内】抛出异常(利用throw语句)
1).throws声明异常
 语法:
     修饰符 返回类型 方法名称(参数列表…) throws 异常类型1,异常类型2…
     {
...
     }
2).throw抛出异常,一般和if 语句配合使用
语法:
      throw new 异常类型();(常用)
      throw new 异常类型("异常描述");
面试题:throw和throws关键字的区别
1、throw最好和if 语句配和使用
2、在【方法头】写出需要抛出的异常(利用throws语句),用throws声明的方法表示此方法不处理异常。而是抛到方法的调用处进行处理
7、自定义异常
步骤:
1).新建一个普通的类,继承自Exception或者RuntimeException。
2).定义一个无参的构造函数,一个带参数的构造函数。
3).编写一个方法,抛出自定义的异常
4).在main方法中调用此方法并且捕获这个异常
语法:
class 自定义异常类名  extends Exception
{
      异常类体;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值