异常
异常的基类:Throwable
严重问题:Error
内存溢出 StackOverflowError
创建对象 OutOfMemoryError
非严重问题:Exception
编译时异常: 非RuntimeException
运行时异常: RuntimeException
JVM默认是如何处理异常的?
main函数收到这个问题时,有两种处理方式:
a:自己将该问题处理,然后继续运行
b:自己没有针对的处理方式,只有交给调用main的jvm来处理
jvm有一个默认的异常处理机制,就将该异常进行处理.
并将该异常的名称,异常的信息.异常出现的位置打印在了控制台上,同时将程序停止运行
处理异常的两种方法:
a.try{...}catch{...}catch{...}...
注:多个异常间是平级关系
b.throws
Throwable的几个常见方法:
a:getMessage(): 获取异常信息,返回字符串。
b:toString(): 获取异常类名和异常信息,返回字符串。
c:printStackTrace(): 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void
主动抛出异常
throw new 异常对象(); // 只能是Exception或是Error的子类对象
throws和throw的区别:
a:throws
用在方法声明后面,跟的是异常类名
可以跟多个异常类名,用逗号隔开
表示抛出异常,由该方法的调用者来处理
throws表示出现异常的一种可能性,并不一定会发生这些异常
b:throw
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
这个异常对象可以是编译期异常对象,可以是运行期异常对象
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常
finally关键字:控制的语句体一定会执行
如何使用异常处理:
原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这是用throws
区别:
后续程序需要继续运行就try
后续程序不需要继续运行就throws
如果JDK没有提供对应的异常,需要自定义异常
自定义异常
创建异常类
class MyException extends Exception{ // 检查异常
}
class MyException extends RuntimeException { // 未检查异常
}
File类
功能方法:
public boolean createNewFile():创建一个新的文件 如果存在这样的文件,就不创建了
public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了 注意这个方法只能创建单层目录 如果创建多层目录得一层一层创建
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来 可以创建多层目录 当然也可以创建单层目录
public boolean delete():删除文件或者文件夹
public boolean renameTo(File dest):把文件重命名为指定的文件路径
public boolean isDirectory(): 判断是否是目录
public boolean isFile(): 判断是否是文件
public boolean exists(): 判断是否存在
public boolean canRead(): 判断是否可读
public boolean canWrite(): 判断是否可写
public boolean isHidden(): 判断是否隐藏
public String getAbsolutePath(): 获取绝对路径
public String getPath(): 获取相对路径
public String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
public File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
public long getTotalSpace() 返回此抽象路径名指定的分区大小。 返回总容量 单位字节
public long getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。返回剩余容量 单位字节
public String getName(): 获取名称
public long length(): 获取长度。字节数
public long lastModified(): 获取最后一次的修改时间,毫秒值
public String[] list(): 获取指定目录下的所有文件或者文件夹的名称数组
public File[] listFiles(): 获取指定目录下的所有文件或者文件夹的File数组
IO流
分类:
按流向:
输入流----读入数据
输出流----写出数据
按操作的数据类型:
字节流
字节输入流-----FileInputStream
BufferedInputStream
ByteArrayInputStream
字节输出流-----FileOutputStream
BufferedOutputStream
ByteArrayOutputStream
字符流
Reader----InputStreamReader
BufferedReader
FileReader
Writer----OutputStreamWriter
PrintWriter