二十二 Java的语言基础(异常机制 File)

异常机制

1.异常就是Java程序在运行过程中出现的错误:

2.异常的继承体系:
	异常的基类:	Throwable
	严重问题:	Error:不予处理,因为这种问题一般是很严重的问题,比如: 内存溢出
	非严重问题:	Exception
					编译时异常:	非RuntimeException
					运行时异常:	RuntimeException

3.运行期异常的处理方式:
	(1)默认处理:是抛给了JVM去处理,JVM的默认处理方式就是打印异常的堆栈信息,然后退出虚拟机;
	(2)自己捕获处理:如果认为JVM处理的不好,自己去捕获处理;使用关键字:
		try{
	有可能出现的异常代码,一旦出现异常,就会执行catch里面的代码
		}catch(类型){
			1.可以并列写多个,捕获不同的异常;
			2.尽量明确;
			3.尽量父类放在最后,平级无所谓。
		}

4.在catch后面加了fially{},代码仍然执行,一般情况里面加一些善后工作。
		(释放资源)
		eg:fianlly{
		scanner.close();    //释放资源
		}

5.编译期异常:
	非RuntimeException及其子类,必须处理,不处理程序不运行;
	处理方式:
		1.抛给调用者处理,谁调用谁处理——>甩锅;(ctrl+Alt+T)
		2.捕获处理:try{}catch()

6.throws和throw区别:
	throws用在方法声明上;抛出多个异常类型;抛出的只是一种发生的可能性,
并不会一定发挥。
	throw用在方法内部;只能抛出一个异常类型;抛出的是一个具体的异常对象,
一旦抛出,说明发生了这个异常。

7.finally:
特点:
	被finally控制的语句体一定会执行(前提 jvm没有停止);
	特殊情况:在执行到finally之前jvm退出了(比如System.exit(0));
作用:
	用于释放资源,在IO流操作和数据库操作中会见到;
区别如下:
   	final: 是一个状态修饰符, 可以用来修饰类 , 变量 , 成员方法.;
			被修饰的类不能被子类继承;
			修饰的变量其实是一个常量不能被再次赋值;
	 		修饰的方法不能被子类重写;
  	Finally:用在try...catch...语句中,作用: 释放资源,
  			 特点: 始终被执行(JVM不能退出)
 	Finalize:Obejct类中的一个方法,用来回收垃圾

8.自定义异常:
 需要将我们自定义的异常类纳入到我们的异常体系中
	继承自Exception
	继承自RuntimeException
	
PS:
异常注意事项(针对编译期异常):
	a:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类,
或者子类不抛出异常也是可以的。(父亲坏了,儿子不能比父亲更坏);
	b:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他
的子集,子类不能抛出父类没有的异常,或者子类不抛出异常也是可以的。
	c:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,
如果子类方法内有异常发生,那么子类只能try,不能throws。

如何使用异常处理:
	原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,
这是用throws。
	区别:
		后续程序需要继续运行就try;
		后续程序不需要继续运行就throws。

File

1.可以用来表示文件,也可以用来表示目录;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.文件名称过滤器过滤器:
	public String[] list(FilenameFilter filter)
	public File[] listFiles(FilenameFilter filter)
需求:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
分析:
	a: 把E:\\demo这个路径封装成一个File对象;
	b: 获取所有的以.jpg结尾的文件数组(相当于过滤);
	c: 遍历数组。

例如:
	File file = new File("D:\\img");
 	File[] files = file.listFiles(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            File file2 = new File(dir, name);
            if (file2.isFile()&&file2.getName().endsWith(".jpg")){
                return true;
            }else{
                return false;
            }
        }
    });
    for (File file1 : files) {
        System.out.println(file1);
        file1.delete();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值