Java 异常、File类——Java学习笔记19(补)

异常Exception

是指Java运行中出现的错误.

异常的继承体系

  • Throwable
    • error
    • Exception
      • RuntimeException

异常的分类

编译期异常和运行期异常
运行期异常即代码中出现的错误,是人为导致的异常,RuntimeException中的为运行期异常,不出错不需要捕捉
编译期异常是编译的时候必须给带有throws的方法进行异常捕捉,除了RuntimeException外的异常都为编译期异常,必须要捕捉或者抛出

异常处理的两种方式

方法一
  • try … catch…finally
    • try…catch
    • try…fanally
    • try…catch…finally
      • try:用来检测异常
      • catch:用来捕获异常
      • finally:释放资源
try…catch方法处理
	try{
		//可能出现异常的代码
	}catch(Exception e){
		//处理方法
	}

处理后程序将继续运行。

JDK7之后的处理多个异常的方法
	try{
		//可能出现异常的代码
	}catch(XxxxxException|XxxxException e){
		//处理方法
	}
方法二
  • b: throws 抛出异常
	//定义方法时
	public void Xxx() throws Exception{	//将异常抛给上一层
		throw new Exception();			//抛出异常
	}
编译期异常

必须对其进行处理

运行期异常

可以处理也可以不处理

throws 和 throw的区别

  • throws:
    • 用在方法声明后面,跟的是异常类名;
    • 可以跟多个异常类名,用逗号分开;
    • 表示抛出异常,由该方法的调用者处理。
  • throw:
    • 用在方法体内,跟的是异常对象名;
    • 只能抛出一个异常对象名;
    • 表示抛出异常,由方法体内的语句处理。

Throwable的几个常见的方法

	String getMessage();		//获取异常信息
	String toString();			//获取异常类名和异常信息
	void printStackTrace();		//打印异常类名和异常信息,以及异常在程序中出现的错误。

finally关键词

特点

被finally修饰的的语句一定会被调用
特殊情况:在执行到finally之前jvm退出了(比如System.exit(0)).

作用

用于释放资源,在IO流和数据库操作里会见到

面试题

  1. final,finally,finalize的区别?
    final可以修饰类、方法、变量,final类不能被继承,final方法不能被重写,final变量只能赋值一次。
    finally是try语句中的一个语句体,不能单独使用,用于释放资源。
    finalize是Object类的一个方法,当垃圾回收器不存在对该对象的更多引用的时候,由对象的垃圾回收器调用此方法。
  2. 如果catch语句中有return语句,finally还会执行吗?
    会,在return之后执行。(不要在finally语句体中写return语句)

自定义异常

目的

异常子类本身是没有任何方法的,异常的目的是通过异常的名字区分出现异常的原因

自定义

class XxxxException extends Exception {
	public XxxxException(String message){		//有参构造方法!
		super(message);
	}
	//就好了!!!!
}

异常的注意事项

  1. 子类重写父类方法时,子类方法必须抛出相同的异常或父类异常的子类;
  2. 如果父类抛出了多个异常,子类只能抛出相同的异常或者它的子集,无法抛出父类没有的异常;
  3. 如果父类方法没有异常,子类方法不能抛出异常。如果子类方法内有异常,只能try,不能throws。

Flie类

构造方法

	File(String pathName);
	File(String parent,String child);		//父级路径和子级路径
	File(File parent,String child);			//父级File和自己路径

常用方法

创建功能

	boolean createNewFile();		//创建文件 如果存在就不创建了,就返会false
	boolean mkdir();				//创建文件夹,如果存在就不创建了,返回false
	boolean mkdirs();				//创建多级目录文件夹,如果父文件夹不存在,也一并创建了 

重命名和删除功能

	boolean renameTo(File dest);	//如果路径名相同,就是改名;不同就是改名并剪切。
	boolean delete();				//jafa中删除不走回收站,删除的文件夹中不能包含文件或文件夹(只能删空的)

判断功能

	boolean isDirectory();	//判断是否是目录
	boolean isFile();		//判断是否是文件
	boolean exists();		//判断是否存在
	boolean canRead();		//判断是否可读
	boolean canWrite();		//判断是否可写
	boolean isHidden();		//判断是否隐藏

获取功能

	String getAbsolutePath();	//绝对路径
	String getPath();			//获取构造方法里的路径
	String getName();			//获取文件或者文件夹的名字
	long length();				//获取长度(字节个数)
	String[] list();			//获取指定目录下所有文件文件夹的名称数组
	File[] listFiles();			//获取指定目录下所有文件文件夹的File数组

文件名称过滤器

FilenameFilter接口

不想看了!!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值