------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a
href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1、异常对象
任何事物都是对象,异常也是对象
Java语言,异常也被封装成了对象
对象,生活实际事物,类,对这个事物抽象描述
异常类,描述异常的对象
程序中:
NullPointerException 空指针异常
ArrayIndexOutOfBoundsException 数组下标越界
2、异常类的继承体系
异常中有个最高层的父类
java.lang.Throwable 可以抛出
所有错误和异常的父类
两个子类
Error 错误
Exception 异常
两个派系
RuntimeException 运行时期异常
不是RuntimeException 编译异常
错误和异常
错误一旦发生,只能修改源代码, 举例:非典,癌症,艾滋
发生异常,处理后,程序可以继续执行, 举例:阑尾炎
1. Throwable类构造方法
Throwable() 空参数
Throwable(String message)传递字符串
2. Throwable处理异常信息方法
String toString() 返回异常信息的简短描述
String getMessage()返回异常信息的详细描述
void printStackTrace() 将异常信息,追踪至标准错误流
理解: 异常信息输出到控制台中
3. 程序Demo:
3、异常处理方式 try..catch
标准语法格式:
try{
被检测的代码
可能出现异常的代码
}catch(异常类名字 变量){
异常的处理代码,可以处理这个异常
写,循环,判断,调用方法....
输出异常信息
}
后面代码,可以继续执行
1. try.catch处理一个异常
在程序中,运行的时候,只有一个异常发生
2. try.catch处理多个异常,平级关系
平级异常:
程序中出现的异常,异常类之间没有继承关系,就是平级
程序中,出现的异常,都是平级关系
多catch处理
3. try.catch处理多个异常,上下级关系
程序,出现的异常类,具有子类父类的继承关系
父类 IndexOutOfBoundsException 集合越界
子类 ArrayIndexOutOfBoundsException 数组越界
4. try.catch处理多个异常JDK7新特性
出现目的,减少程序编写
弊端
多个catch合并成一个catch,异常必须是平级
4、throw 和 throws
1. throw关键字的用法
定义方法,如果出现情况,程序不能继续执行,应该在方法内部抛出异常
throw new 异常对象
方法内部有异常,必须处理,否则编译失败
方法自己处理不了,让调用者处理
2. throws关键字的用法
定义在方法的声明上, 表明方法中有异常,请调用者处理
throws 写在声明上,后面写的是异常类名
方法的调用者,必须处理异常,不处理编译失败
5、编译异常和运行异常
Java中将异常分成2个类别
编译时期异常: 调用一个抛出异常的方法,没有对异常处理,直接编译失败
运行时期异常,和编译无关
1. 运行时期异常
java.lang.RuntimeException 类和他的所有子类
都是运行时期异常
2. 运行时期异常的特点
方法内部,如果throw抛出的是运行时期异常的话
方法的声明上,不需要throws表明
调用者也不能进行处理
3. 运行时期异常的设计思想
在程序的运行期间,运行时期异常是不能发生的,
如果真的发生运行异常,不要处理,程序必须停下,程序员修改源代码
总结: 出现运行异常,停下程序,改代码,千万不要try catch throws
运行时期异常,一旦发生,后面的程序,没有在执行的意义
6、异常该如何处理
try catch throw throws
自己可以处理,就自己处理
自己不能处理,抛出去
使用的是别人的功能,应该try,自己写功能 throws
7、finally代码块
1. 格式:
try..catch(){} finally{}
try..finally{}
凡是程序写在finally里面,必须会执行
无论有没有异常,finally 必须执行,使用价值释放资源 (IO流)
程序Demo:
2. final,finally和 finalize 的区别
A:final是最终的意思。它可以用于修饰类,成员变量,成员方法。
它修饰的类不能被继承,它修饰的变量时常量,它修饰的方法不能被重写。
B:finally:是异常处理里面的关键字。
它其中的代码永远被执行。特殊情况:在执行它之前jvm退出。System.exit(0);
C:finalize:是Object类中的一个方法。
它是于垃圾回收器调用的方式。
8、自定义异常
JDK的所有的异常类中,能不能将开发中的所有问题,都描述的清楚呢
半径必须大于0,这样的异常,JDK可能已经做好吗
自定义异常的步骤
规范: 自己写的异常类,类名,后缀必须是Exception
必须继承Exception,或者继承RuntimeException
异常类,构造方法,super异常信息,传递给父类构造方法
9、子类继承父类的异常处理
子类重写父类方法,如果有异常
继承后,子类父类中的异常处理
A: 父类中方法,如果抛出异常,子类重写
子类方法可以抛,可以不抛
如果子类抛,不能抛出比父类更大的异常
B: 父类方法,不抛出异常,子类重写
子类重写后,不能抛出任何异常
如果,子类调用了一个抛出异常的方法
子类别无选择,只能try.catch
10、File类
File类的作用: 将操作系统中的,文件,目录(文件夹),路径,进行对象封装
提供很多的方法,专门操作文件,目录,和路径
11、File类静态成员变量
都是静态,被final修饰
一共4个,每两个一组
区别:结果数据类型不同,一组是String,一组是char
看结果是String
static String pathSeparator 与系统有关的路径分隔符
static String separator 与系统有关的名称分隔符
12、File类构造方法
1. File(String path)
创建File对象时候,传递构造方法,字符串的路径
E:\workspace\day19
E:\workspace\day19\.project
将传递的路径,封装成File类型对象,(调用File类方法,操作路径)
2. File(String parent,String child)
传递String类型父路径,String子路径
3. File(File parent,String child)
传递File类型父路径,String子路径
13、File类创建功能
1. boolean createNewFile()
创建新文件,创建的是File构造方法中,写的路径
创建成功返回true,创建失败返回false
2. boolean mkdir()
创建新目录,创建新文件夹,创建的文件夹路径,写在构造方法中
创建成功返回true,创建失败返回false
只能创建一级文件夹,不能创建多级文件夹
boolean mkdirs()
推荐使用mkdirs()
14、File类删除功能
boolean delete()
删除File构造方法中封装的路径(文件,文件夹)
删除成功返回true,删除失败返回false
15、File类重命名方法
boolean renameTo(File dest)
对File对象封装的路径进行重命名
需要File对象调用.renameTo(传递另一个File对象)
调用者,数据源,传递另一个File对象,被修改后的
16、File类判断方法
方法的运行结果是boolean类
1. boolean exists()
判断File构造方法中封装的路径是不是存在
如果存在返回true,不存在返回false
2. boolean isDircetory()
判断File构造方法中封装的路径,是不是目录
是不是文件夹,如果是返回true,不是返回false
3. boolean isFile()
判断File构造方法中封装的路径,是不是文件
是不是文件,如果是返回true,不是返回false
4. boolean isHidden()
判断File构造方法中封装的路径,是不是隐藏属性
如果是隐藏属性返回true
5 boolean isAbsolute()
判断File构造方法中写的是不是绝对路径
如果是绝对路径返回true
6. boolean canRead()
判断File构造方法中封装的文件是不是可以被读取
打开
7. boolean canWrite()
判断File构造方法中封装的文件是不是可以被写入
修改