day19 Java学习(异常&IO(File类))
异常(异常的概述和分类)
概述:Java运行过程中出现的错误。
分类:
* Throwable
* Error (服务器宕机 , 数据库崩溃...)
* Exception
异常继承体系:
* Throwable
* Error
* Exception
* RuntimeException (运行时异常)
异常(try...catch的方式处理异常)
try:用来检测异常的。
catch:用来捕获异常的。
finally:释放资源
异常处理的两种方式:
1: try...catch...finally
* try catch
* try catch finally
* try finally
2: throws
try...catch处理异常的基本格式:
* try...catch...finally
异常(throws的方式处理异常)
throws的方式处理异常:
* 定义功能方法时,需要把出现问题暴露处理让调用者去处理。
* 那么就通过throws在方法上标识。
public void setAge(int age) throws Exception { //throws标识 if (age<0) { //抛出一个异常 throw new Exception("年龄不能少于0"); }else if (age==0) { throw new Exception("年龄不能等于0"); }else { this.age = age; } }
异常(throw的概述以及throws的区别)
throw的概述:在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。
throw以及throws的区别:
throw:
* 用在方法体内,跟的是异常对象名。
* 只能抛出一个异常对象名。
* 表示抛出异常,有方法体内的语句处理。
throws:
* 用在方法声明后面,跟的是异常类名。
* 可以抛出多个异常类名,用逗号隔开。
* 表示抛出异常,有方法的调用者处理。
异常(finally关键字的特点及作用)
finally的特点:
* 被finally控制的语句体一定会执行。
* 特殊情况:在执行到finally之前JVM退出了(比如System.exit( 0 ):退出JVM虚拟机)。
finally的作用:
* 用于释放资源。(是try语句中的一个语句体,不能单独使用)
注意:千万不要在finally里面写返回语句。(如果里面写了返回语句,那么try和catch的结果都会被改变)
异常(编译期异常和运行期异常的区别)
Java的异常被分为两大类:编译期异常和运行期异常。
所有的RuntimeException类及其子类的实例被称为运行时异常,其他的异常就是编译期异常。
编译时异常:
* Java程序必须显示处理,否则程序就会发生错误,无法通过编译。(比如文件找不到)
运行时异常:
* 无需显示处理,也可以和编译时异常一样处理。
异常(Throwable的常见方法)
* getMessage( ) :获取异常信息,返回字符串
* toString( ) : 获取异常类名和异常信息,返回字符串
* printStackTrace( ) :获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void。
异常(自定义异常概述和基本使用)
自定义异常概述:
* 继承自Exception
* 继承自RuntimeException
异常(异常的注意事项及如何使用异常处理)
异常的注意事项:
* 子类重写父类方法时,子类的方法必须抛出相同的异常或父类的子类。
* 如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是它的子集,子类不能抛出父类没有的异常。
* 如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常。如果子类方法内有异常抛出,那么子类只能try ,不能throws。
如何使用异常处理:
* 原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这时用throws。
* 区别:
* 后续程序需要继续运行就try
* 后续程序不需要继续运行就throws
* 如过JDK没有提供对应的异常,需要自定义异常。
File类(File的概述和构造方法)
概述:
* File更应该叫做一个路径。
* 路径分为据对路径和相对路径。
* 绝对路径是一个固定的路径,从盘符开始。
* 相对路径相对于某个位置。
构造方法:
* File(String pathname):根据一个路径得到File对象。
* File(String parent,String child):根据一个目录和一个子文件/目录得到File对象。
* File(File parent,String child):根据父File对象和一个子文件/目录得到File对象。
File类(File类的创建功能)
创建功能:
* publuc boolean createNewFile( ) :创建文件(如果存在这样的文件,就不创建了)
* publuc boolean mkdirs( ) :创建文件夹(如果存在这样的文件夹,就不创建了)
注意事项:
* 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
public static void main(String[] args) throws IOException { //File类的创建功能 File file =new File("test.txt"); System.out.println(file.createNewFile()); //createNewFile():创建文件(如果存在这样的文件,就不创建了) File file2=new File("视频"); File file3 =new File("testss.txt"); //这样写也可以,文件夹也是可以有后缀的。 System.out.println(file2.mkdir()); //mkdir():创建文件夹(如果存在这样的文件夹,就不创建了) System.out.println(file3.createNewFile()); File file4 =new File("视频\\1.txt"); System.out.println(file4.mkdirs()); //mkdirs():创建多级目录文件夹(如果存在这样的文件夹,就不创建了) }
File类(File类的重命名和删除功能)
重命名和删除功能:
* publuc boolean renameTo(File dest):把文件重命名为指定的文件路径。
* publuc boolean delete( ):删除文件或者文件夹。
重命名注意事项:
* 如果路径名相同,就是改名。
* 如果路径名不相同,就是改名并剪切。
删除注意事项:
* Java中的删除不走回收站。
* 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹。
File类(File类的判断功能)
判断功能:
* publuc boolean isDirectory( ):判断是否是目录。
* publuc boolean isFile( ):判断是否是文件。
* publuc boolean exists( ):判断是否存在。
* publuc boolean canRead( ):判断是否可读。
* publuc boolean canWrite( ):判断是否可写。
* publuc boolean isHidden( ):判断是否隐藏。
File类(File类的获取功能)
获取功能:
* publuc String getAbsolutePath():获取绝对路径
* publuc String getPath():获取路径
* publuc String getName():获取名称
* publuc long length ( ):获取长度。(字节数 )
* publuc long lastModified ( ) :获取最后一次的修改时间,毫秒值
* publuc String [ ] list ( ) :获取指定目录下的所有文件或者文件夹的名称数组
* publuc File [ ] listFiles ( ) :获取指定目录下的所有文件或者文件夹的File数组
File类(输出指定目录下指定后缀的文件名)
public static void main(String[] args) throws IOException { File dir = new File("D:\\"); File[] arr = dir.listFiles(); for (File file : arr) { if (file.isFile() && file.getName().endsWith(".jpg")) { System.out.println(file); } }