异常,IO-File笔记

1. 整理遇到的异常和错误
运行环境
出现原因
解决方案
-- IO讲完 检查,这就是工作经验。


2.异常体系
Throwable 类是 Java 语言中所有错误或异常的超类。
Error -- 严重错误。不需要处理(不需要写捕捉错误的代码)。 需要改代码的。 例如:死循环造成内存溢出。
xxxError(有一个特殊)
Exception 
编译期 : 必须写代码处理异常。
运行期 : 也是不需要处理异常,而是需要改代码的。
xxxException

3、Jvm默认处理异常和自己处理
Jvm默认处理: 把详细信息显示在控制台,然后终止。后面的代码就不执行了。
自己捕捉异常处理:
try {
// 可能产生异常的代码(尽可能的定位到异常出现的位置)
} catch (异常类名 变量名) { // Exception
// 异常处理语句
// 以后,返回错误页面等等。暂时显示异常。
}

// 不影响异常后面的代码运行。


世界上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离;
世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己;
世界上最真情的相依,是你在try我在catch。无论你发神马脾气,我都默默承受,静静处理。到那时,再来期待我们的finally!

几个名词:
声明异常
抛出异常:方法声明上使用
捕获异常:方法体中使用
嵌套异常:在finally中会出现需要捕获处理的异常
4.多个异常的处理方式
A: 针对每一个异常都进行try...catch
B: 针对所有异常 写一个try 多个 catch。
注意:一定要捕捉到所有的异常。
一旦捕捉到异常了,try下面的语句将不再执行,程序将跳转到catch。


5.多个catch的顺序问题
如果异常同级,没有顺序。
如果异常存在父子关系,父类一定要放在子类的后面。
原则:如果你明确知道是什么异常,就一定要捕捉具体的异常,不建议使用父类。

6.JDK1.7后新特性
多个异常:
catch(异常类名1 | 异常类名2 | ...   变量名)


7.Throwable的三个方法
getMessage() -- 获取异常的消息字符串
toString() -- 全路径异常的类名:消息字符串
printStackTrace() -- 把异常的详细信息打印到控制台

8、加入finally 语句
try {
// 可能产生异常的代码(尽可能的定位到异常出现的位置)
} catch (异常类名 变量名) { // Exception
// 异常处理语句
// 以后,返回错误页面等等。暂时显示异常。
} finally {
// 释放资源
}

finally 有和没有的区别:
假设,如果有必需要执行的程序,放在finally中就一定会执行。
但是如果不放在finally中,假设这个时候出现的异常是没有被捕获到的,那么程序就会死掉,从而导致必须要执行的代码没有被执行到!


9.总结异常处理两种方式:

抛出异常 -- 在方法上声明异常 : throws 异常类名

try...catch 处理

如果知道怎么处理,一般建议处理。不知道了,抛。

10.自定义异常
自定义一个类,继承Exception 或者 RuntimeException 。提供带参(String)构造。
工作中一般都继承自RuntimeException

在可能出现这个异常的代码处,做异常处理时,抛出此异常。 -- 关键字 throw

11. finally 面试题
final,finally,finalize的区别?

final 关键字:

finalize 是Object类中的一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

gc -- 垃圾回收器

finally: 是异常处理机制的一部分。常用用来释放资源。
finally里面的代码总会执行。(除非虚拟机退出了。 -- 在finally代码前执行了exit() 方法 或者恰好断电了)
return前还是后呢? 在return 之间. 也就是说如果程序执行到了return语句。 那么程序就已经找到了返回路径。 再去执行finally 语句。执行完再回到之前的返回路径。

12.IO流
数据传输

分类:
按流向分(站在程序的角度) 
输入流
输出流
按操作的文件类型分:
字节流:
字符流:处理文本文件(windows自带记事本可以打开并且不乱码的文件)

13. File
构造方法:
File(String pathname) 
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child) 
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(File parent, String child) 
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 


File创建功能
创建文件:boolean createNewFile()  -- 如果存在,则不创建,返回false。要求文件的父目录必须存在。

创建文件夹: boolean mkdir() -- 创建单级目录, 如果存在,则不创建,返回false
boolean mkdirs() -- 创建多级目录。
注意问题:想创建文件还是文件夹,一定要明确。

File的删除一定要注意:删除你新创建的拿来练习的东西。File的删除不走回收站。
删除 delete() -- 删除文件或者文件夹(文件夹下如果有东西,删除失败)



File的判断功能
boolean exists()
boolean isFile()
boolean isDirectory()
boolean isAbsolute()
boolean canRead()
boolean canWrite()
boolean isHidden()

File的获取功能
getAbsolutePath()
getPath() -- 目前咱们的java项目,相对路径到项目的跟路径。
getName() -- 带后缀的文件名
length() -- 文件大小 字节数
lastModified() -- 最后修改时间 -- 毫秒值

重要获取:
static File[] listRoots() -- 系统根目录
String[] list() -- 返回指定目录下的所有文件(夹)的名称数组
File[] listFiles() -- 返回指定目录下的所有文件(夹)的对象数组


文件名称过滤器 FilenameFilter -- accept(File dir, String name)










补充:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值