黑马程序员----十九-异常和File类

本文详细介绍了Java中异常的概念、分类、JVM默认处理方式、try-catch语法、抛出异常的方法、finally关键字作用及注意事项,并通过实例演示如何在Java程序中正确处理异常。此外,还讲解了如何自定义异常、文件类操作、输出指定目录下指定后缀的文件名等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

今天学习异常.

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

2.异常的分类
通过API查看Throwable.
a.Errow
b.Exception
   --RuntimeException(运行时异常)

二.JVM默认如何处理异常
1.main函数有两种处理方式
  a.自己将该问题处理,然后继续运行
  b.自己没有针对的处理方式,就交给JVM

四.try,catch处理异常2
1.可以有多个catch.大异常必须放后面.

2.安卓,客户端开发,如何处理异常?try{}catch(Exception e){},全部抓进去
javaee,服务端开发,一般都是底层开发,从底层向上抛

六.Throwable的几个常见方法
1.getMessage()
 获取异常信息
2.toString()
 获取异常类名和异常信息
3.printStackTrace()
 获取异常类名和信息以及出现位置
 JVM默认就用这种方法处理异常

七.throws的方法处理异常
1.throws的方式处理异常
  a.定义功能方法时,需要暴露问题
  b.通过throws在方法上标识
2.案例演示
编译时异常必须对其进行处理,
运行时异常可以不处理.

十.finally关键字的面试题
1.final,finally,finalize的区别
  a.final
 final可以修饰类,不能被继承,修饰方法,不能被重写,修饰变量,只能赋值一次.
  b.finally
 finally是try语句中的一个语句体,不能单独使用,用来释放资源
  c.finalize
 finalize是当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法.

2.如果catch里面有return语句,请问finally的代码还会执行吗?如果会,是在return前还是return后.
会,执行return之后会创建一个返回路径,然后再执行finally,但是返回路径中的东西是不变的.不要在finally里面写返回语句.因为finally的作用是为了释放资源,是肯定会执行的.

十一.自定义异常
自定义一个异常,然后写一个参数构造函数就可以了.
class AbcException extends Exception{
public AbcException(String s){
 super(s);
}
}
可以通过资源列表C快速创建.

十二.异常注意事项
1.注意事项
a:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
b:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
c:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws

2.如何使用异常处理
原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这是用throws
区别:
后续程序需要继续运行就try
后续程序不需要继续运行就throws
如果JDK没有提供对应的异常,需要自定义异常.

十三.练习
键盘录入一个int类型的整数,对其求二进制表现形式.
如果整数过大,给予提示,录入的整数过大
如果是小数,提示录入的是小数
如果是其他字符,提示是非法字符

分析:
1.创建键盘录入对象
2.将键盘录入的结果存储在String类型的字符串中,存储int类型中如果有不符合条件的直接报错,无法进行后续判断
3.键盘录入的结果转换成int类型的数据,是正确的还是错误的
4.正确的直接转换
5.错误的要进行对应判断

Scanner sc=new Scanner(System.in);
String line=sc.nextLine();
int num=Integer.parseInt(line);
sysout(Integer.toBinaryString(num));

思路就是:
先抓一个错误,不管是什么,我就new一个BigInteger,把这个line放进去,如果这个line不是大的整数的话,那么肯定还会出错,那么我就再new一个BigDecimal,把line放进去,如果这个line不是小数的话,依然会出现其他异常,现在就不管是什么异常了,直接说他是非法字符.

 

 

 


十四.File类
1.File更应该叫做一个路径,而不是文件.
  a.绝对路径和相对路径
 从盘符开始是绝对路径.
 相对路径是相对于某个位置.
2.查看API
  是java.io包下的

3.构造
因为\是转译,所以要2个.
File f=new File("F:\\a\\b\\001.avi");
sysout(f.exists());
返回boolean.

String parent="F:\\a\\b";
String child="001.avi";
File f=new File(parent,child);

十五.File类的创建功能
1.boolean createNewFile()创建文件
2.boolean mkdir()创建文件夹
3.boolean mkdirs()创建文件夹,包括父文件夹

十六.File类重命名和删除功能
1.重命名和删除
boolean renameTo()重命名为指定的文件路径
boolean delete()删除文件或文件夹

2.注意
如果路径名相同,就是改名
如果路径名不同,就是改名并剪切
java中的删除不走回收站
要删除文件夹里面不能有文件

十七.File类的判断功能
?public boolean isDirectory():判断是否是目录
?public boolean isFile():判断是否是文件
?public boolean exists():判断是否存在
?public boolean canRead():判断是否可读
?public boolean canWrite():判断是否可写
?public boolean isHidden():判断是否隐藏

十八.File类的获取功能
?public String getAbsolutePath():获取绝对路径
?public String getPath():获取路径
?public String getName():获取名称
?public long length():获取长度。字节数
?public long lastModified():获取最后一次的修改时间,毫秒值
?public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
?public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组

十九.输出指定目录下指定后缀的文件名

二十.文件名称过滤器
1.FilenameFilter
里面只有一个方法boolean accept(File dir,String name),测试指定文件是否应该包含在某一文件列表中.

String[] arr=dir.list(
new FilenameFilter(){
public boolean accept(File dir,String name){ return true;}
}
);
用匿名内部类
for(String s:arr){
 sysout(s);
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值