导图社区 IO流知识点学习笔记总结
IO流知识点学习笔记总结:如果catch中有return语句,finally中的代码会不会执行,如果会,是在return之前,还是在return之后?
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
英语词性
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
法理
刑法总则
【华政插班生】文学常识-先秦
【华政插班生】文学常识-秦汉
文学常识:魏晋南北朝
【华政插班生】文学常识-隋唐五代
【华政插班生】文学常识-两宋
IO流知识点学习笔记总结
异常
概述:
java程序中出现不正常的情况
分类:
Throwable
Error:
错误,服务器宕机,数据库崩溃
Exception:
编译期异常
除了RuntimeException类及其子类都是编译期异常
必须显示的处理(修改代码),否则编译不通过
运行时异常
RuntimeException类及其子类都是运行时异常
可以不用立即显示处理(修改代码),也能通过编译,但是一般是 要我们来修改代码的,因为程序没有办法运行
Throwable类中的方法:
getMessage()
获取的是异常信息,返回的是字符串
toString()
获取的是异常信息和异常类,返回的也是字符串
printStackTrace()
获取的是异常信息,异常类,异常位置,返回值是void
java中出现异常的处理方式:
1、交给调用main方法的JVM处理
JVM处理后,会将异常信息,异常类名,异常 的位置打印在控制台,结束程序的运行
2、自己处理
1、try catch finally
格式:
try{ //可能会出问题的代码 }catch(异常类名 异常对象名 ){ //捕获异常,处理异常 }finally{ //释放资源的 }
只会有三种形式
try catch
try catch finally
try finally
try catch处理多个异常的方式:
try{ }catch(异常的数据类型1 异常对象名1 ){ }catch(异常的数据类型2 异常对象名2 ){ }catch(异常的数据类型3 异常对象名3 ){ }...... finally{ }
1.7以后的新特性
try{ }catch(异常的数据类型1 | 异常的数据类型2 ... 异常对象名 ){ }finally{ }
注意:
try后边跟多个catch的时候,catch里边的写的异常类 的顺序是: 从小到大。根据多态的原理,如果大的放前 面,就会将所有的子类对象接收,后面的catch就没有意义了
开发中的写法(掌握):
try{ }catch(Exception e ){ e.printStackTrace(); }finally{ }
try catch finally作用:
try:检测异常
catch:捕获异常
finally:释放资源(IO流,数据库经常会用到)
特点:finally里边的语句体一定会执行(特殊情况除外)
特殊情况:
1、在没有到finally的时候,jvm就退出了。
2、在没有到finally的时候,断电。
finally的三个面试题:
1、final,finally,finalize三者的区别?
final:它是一个关键字,修饰类,不能被继承, 修饰方法,不能被重写,修饰变量,只能赋值一次 finally:try语句中的一个语句体,finally中的代码必须执行,用来释放资源 finalize:Object类中的方法,在不确定的时间被垃圾回收机制回收垃圾的时候,会调用这个方法
2、如果catch中有return语句,finally中的代码会不会 执行,如果会,是在return之前,还是在return之后?
会。 正确的理解:在return之间。 面试的回答:在return之前。 在catch中看到return,会先创建一个返回路径,返回的值会记录在返回路径中,但是,看到try。。catch这个语句中有finally,所以不会立马返回结果,而是先去执行finally中的内容,finally中的内容执行完后,return再将结果返回
3、如果没有finally,后面的代码也会执行,那么finally有和 没有的区别是什么(假设finally一定会执行的正常情况下)
区别在于如果catch中有return语句,后边的代码 就不会执行到,后边的代码有finally的话还会执行
2、throws
定义方法的时候,就把可能出现的问题暴漏出来,交给方法的的调用者类处理
在方法声明后边 throws 异常类型就可以了。
throw如果抛出的是编译期异常,方法上必须throws。
throw如果抛出的是运行时异常,方法上可以不用throws。
throws和throw的区别
throws
定义方法名之后
后边跟的是异常类型,可以跟多个异常类名(中间用逗号隔开)
异常由方法的调用者来处理。
throw
定义在方法中
后边跟的是异常对象,只能跟一个异常对象
异常由方法内部的语句来处理
定义的位置、跟的类型、处理不同
自定义异常:
作用:
用于区分异常名称,便于找到针对性的解决方案
怎么做?
1、自己写类,继承Exception,并写上无参有参构造
2、自己写类,继承RunTimeException,并写上无参有参构造
异常的注意事项(子类重写父类的方法的时候)
1、子类方法的异常必须和父类方法的异常相同或者是父类方法异常的子类。
2、子类方法不能出现父类方法没有的异常。
3、父类方法没有抛异常,子类不能抛异常,如果子类方法里边有异常,只能用try处理,不能用throws。
如何使用异常处理:
原则:
能用try尽量用try,如果try不能用,就用throws。
区别:
try处理后程序会接着运行,
throws抛出异常后,程序不在执行。
如果我们使用的异常是JDK没有提供的,就自己定义异常类型。
File类
它表示的是一个路径(文件夹或文件路径)
绝对路径
固定的,一般是以盘符开始的
相对路径
相对于XXX来说的
构造方法:
file(String pathname)根据给定的文件或目录来创建对象
file(String parent,String child)根据给定的父目录和子目录来创建对象
file(File parent,String child) 根据给定的父目录对象和子目录来创建对象
常用方法:
创建功能:
createNewFile()创建文件
mkdir()创建单级的文件夹
mkdirs()创建多级的文件夹
重命名和删除:
renameTo(File dest)重命名
delete()删除
判断:
isDirectory()是否是目录
isFile()是否是文件
exists()是否存在
canRead()是否可读
canWrite()是否可写
isHidden()是否隐藏
获取功能:
getAbsolutePath()获取绝对路径
getPath()获取路径
getName()获取名称
length()获取长度,字节数
lastModified()获取最后一次的修改时间,毫秒值
list()返回指定目录下所有文件或文件夹的字符串数组
listFiles()返回指定目录下所有文件或文件夹的File数组
文件过滤器:
String[] list(FilenameFilter filter)
用匿名内部类的形式创建FilenameFilter接口的子类对象,并重写accept方法
File[] listFiles(FileFilter filter)
用匿名内部类的形式创建FileFilter接口的子类对象,并重写accept方法
windows的所有文件都是可读的,可以设置为不可写