Java基础笔记总结(12)-异常处理,File类

JVM默认是如何处理异常的

main函数有两种处理方式:

1、自己处理该异常然后继续运行

2、自己没有针对的处理方式,只有交给main的jvm进行处理

jvm默认的异常处理机制,就将异常进行处理

并将该异常的名称,异常的信息,异常的出现位置打印只控制台,并将程序停止运行

常见异常 ArithmeticException算数异常

------------------------------------------------------

try检测异常 catch捕获异常 finally释放资源:

try catch 处理问题后,后续代码可以继续执行(try catch可以跟多个)如果第一个catch处理完,后面的catch不再检测了

try catch finally

try finally

注意 如果第一个写了Exception后,后面的不能在写ArithmeticException,没有意义

JDK1.7如何处理多个异常

catch(ArithmeticException|ArrayIndexOutOfBoundsException e)

-------------------------------------------------------

编译期异常和运行期异常

运行时异常,所有RuntimeException都属于运行时异常,

编译时异常,必须显示处理,否则无法通过编译

--------------------------------------------------------

Throwable常见方法

getMessage()获取错误信息

toString() 返回异常类型和异常信息

printStackTrace()获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void

-------------------------------------------------------

throw方式处理异常

如果某一个属性满足条件,则使用语句终止

public void xx() throws Exception{

throw new Exception("xxx");

}

方法中如果抛出RuntimeException 则无需再处理该异常,在方法上无需声明

编译时异常的抛出,必须对其进行处理

运行时异常的抛出,可以处理,也可以不处理

throw在功能方法内部,程序不能运行就进行跳转,后面紧跟随异常对象

throws 用在方法声明后面,跟异常类名,可以用多个异常类名,表示抛出异常,用该放着调用者处理

-----------------------------------------------------------

finally

被finally控制的语句体一定会执行,特殊情况,System.exit(0);直接退出java虚拟机

用于释放资源,常见于数据库和IO流

方法结束前要检查是否要执行finally方法

final finally finalize的区别

final 可以修饰类 不能被继承,修饰方法 不能被重写,修饰变量 只能赋值一次,

finally是 try catch中的语句体,不能单独使用,用来释放资源

finalize 是一个方法,当垃圾回收器确定不会有该对象更多的引用,用对象垃圾回收器将其释放掉

finally return是建立了一个返回路径,然后再检测finally语句,虽然finally中执行了操作,但是打包好的值不能再改变

  千万不要再finally中写返回语句,因为finally作用是为了释放资源,是肯定会执行的,如果在这里存放返回语句,那么try和catch结果都会被改变。

--------------------------------------------------------------

子类重写父类方法,子类方法必须抛出相同的异常和父类异常的子类

如果父类抛出多个异常,子类重写父类是,必须抛出相同异常和它的子集

如果重写的方法没有抛出异常,那么子类方法只能try,不能抛throw

异常处理:

如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这里用throw

后续程序需要继续运行就用try:有异常并不会停止程序

后续程序不需要继续运行就用throws

alt+shift+z try catch快捷键

--------------------------------------------------------------

File类 (路径:文件路径或者文件夹路径)

路径分为绝对路径和相对路径

绝对路径是固定路径,从盘符开始

相对路径是相对于某个位置 Eclipse中指当前项目,而dos下指当前路径

FileInputStream fis = new FileInputStream("xxx.txt");

dos下指代当前路径

File file = new File("F://xxx.txt");//注意考虑转义字符

bool flg = file.exists();文件是否存在

File file2 = new File("xxx.txt");

File parent =new File("F://父类路径");

String child = "子类路径格式";

File file = new File(parent,child);

----------------------------------------------------------------

File类的创建过程

File file = new File("");

bool flg = file.createNewFile();//如果存在该文件,就不创建

没有后缀也能创建文件

file.mkdir();创建文件夹

File file2 = new File("bb.txt");

file2.mkdir();创建了一个带后缀的文件名称

File file3 = new File("bbb//ccc");

file2.mkdirs();创建多级文件

file.mkdirs();

----------------------------------------------------------------

File类重命名和删除功能

File file1 = new File("xxx.txt");

如果路径相同,就是改名,不相同就是改名+剪切

File file2 = new File("ooo.txt");

file1.renameTo(file2);

File file  = new File("xxx.txt");

file.delete();

如果要删除文件夹,如果有嵌套文件夹,则不能删除父类文件夹

File file2 = new File("aaa");

注意:Java删除不走回收站

---------------------------------------------------------------------

Filel类的判断方法

File file = new File("");

file.isDirectory()判断是否是目录,文件夹

file.isFile()判断是否是文件

file.exists()判断是否存在

file.canRead()判断是否可读

file.setReadable(false)设置是否可读 windows认为所有文件都是刻度的

file.canWrite()判断是否可写

file.setWritable(false)可以设置不可写

file.isHidden()判断是否可以隐藏

--------------------------------------------------------------

File的获取功能

file.getAbsoulutePath()和获取绝对路径

file.getPath()获取路径//传相对路径获取相对路径,传绝对获取绝对路径

file.getName()获取名称

file.length()获取文件字节数

file.lastmodified()获取最后一次修改时间

String[] strs = file.list();获取指定目录下所有文件和文件夹的名称

File[] files = file.listFiles();获取指定目录下的所有文件或者文件夹

-----------------------------------------------------------------

输出指定目录下的指定后缀名

File dir = new File("E:\\");

String[] arr = dir.list();

for(String string :arr){

  if(String string :arr){

if(string.endsWith(".jpg"));}

}

File[] fileList = dir.listFiles();

for(File subFile : subFiles){

if(subFile.isFile()&&subFile.getName().endsWith(".jpg"))

}

-----------------------------------------------------------------------

File文件名称过滤器啊

String[] arr = dir.list(new FilenameFilter{

public boolean accept(File dir,String name){

dir 是封装路径 name是文件名称

File file = new File(dir,name);

  return file.isFile()&&file.getName().endsWith("opg");

}

});

你可能感兴趣的:(Java基础笔记总结(12)-异常处理,File类)