Java---异常类、文件类

来源:互联网 发布:win7内存优化软件 编辑:程序博客网 时间:2024/06/03 18:43

一、异常类

在eclipse中写Java代码的时候,我们会发现,在你的程序出现语法错误时,软件会自动提示你某处代码有问题,如果想要运行程序就需要将其修改正确。在修改正确之后,编译通过之后,我们也会常常遇到程序运行之后不是想要的结果,而系统提示的一些错误,

例如:

Exception in thread "main" java.lang.ArithmeticException: / by zero
at org.westos_guangjianzi.FileDemo.main(FileDemo.java:21)

这个就是java中的异常。

java中的异常分为编译时期异常和运行时期异常。编译时期异常就是指在编译过程中出现的错误,,可以说只要不是运行时期的异常那都属于编译时期异常。而运行时期异常是指在编译通过之后,程序运行出现问题,这个通常都是自己所写的代码不够严谨所造成的一些逻辑错误。

而Exception就是所有java异常的父类,Exception的子类有很多,例如:AclNotFoundException,ActivationException,AlreadyBoundException,ApplicationException,AWTException,BackingStoreException, 等等,其中RuntimeException异常就是指运行时期的异常。在编译通过后,程序出现问题系统就会抛出异常。当然还有我们经常遇到的像是类转换异常ClassNotFoundException,数组越界异常AlreadyBoundException等等。

了解异常类之后,我们来讲讲java中如何处理这些异常,除了通过自己改程序,改逻辑上的错误,java提供了两种方式来处理异常:

1)try,,,catch,,,finally:捕获异常,例如进行两个变量的运算,a=20,b=0,用a/b,这个语法上是可以错误的,但是这个程序的逻辑是错误的,因为分母是不能为零的,那么如何处理这个状况的发生呢,这里就用方式来捕获异常。

try{
//可能出现问题的代码
System.out.println(a/b);
}catch(ArithmeticException e){
System.out.println("除数不能玩为0");
}

其中ArithmeticException是个异常类,当虚拟机抛出的异常和catch中的异常类匹配,就执行里面的语句,要处理可能出现错误的语句 。

2)throws抛出异常的方式,将可能出现的异常在方法上抛出

例如:在创建一个SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;之后,调用parse方法,这个方法在java中本身就有一个ParseException异常,所以需要在main方法上抛出此异常public static void main(String[] args) throws ParseException{}。

这里给出一个异常处理的完整代码帮助理解:

public class ExceptionDemo2 {

public static void main(String[] args) {
//定义两个变量

int a = 10 ;
int b = 0 ;

int[] arr = {1,2,3} ;

try {
//try中:是可能会出现问题的代码
System.out.println(a/b);
//针对问题给出具体的异常类:
} catch (Exception e) {
// e.printStackTrace();
System.out.println("除数不能为0");
}

System.out.println("over");
}

其中的printStackTrace方法是常用的异常处理方法,当出现异常的时候,它会将那个包下以及具体那个代码出现了什么问题都打印在控制台。try中是可能出现错误的代码,catch中是捕获代码后给出的处理。

二、文件类(File)

File,是用来描述文件或者目录(文件夹)的路径的抽象表现形式

文件类就是对文件的一系列操作,例如创建某个文件,删除某个文件等等。

首先给出他的三个构造方法:

1)public File(String pathname)

例:File file = new File("E:\\demo\\a.txt") ;以字符串的方式表示出当前文件或者文件夹

2)public File(String parent,String child)

例:File file2 = new File("E:\\demo", "a.txt") ;通过parent和child共同表示出当前文件和文件夹

3)public File(File parent, String child)

例:File file3 = new File("E:\\demo") ;
File file4 = new File(file3, "a.txt") ;也是通过给定的参数表示出当前文件和文件夹,注意此构造方法中的第一个参数是file类型的,在使用前需要先创建一个file一个对象。

在通过以上三种方式构造file对象之后,就需要创建文件了,那怎么在盘符下创建文件或者文件夹呢?

java提供了一些成员方法用于创建:

1)mkdir方法,用于创建文件夹,如果有则不再创建,返回false

2)creatNewFile方法,用于创建文件,也是有就不在创建,如果在某个文件夹下面创建,那么需要保证该文件夹真实存在,否则会出错,这里会抛出一个异常IOException。

3)mkidirs方法,这个方法也是创建文件夹的,和mkidir方法不同的是,这个方法可以创建多级目录,例如;aaa\\bbb\\ccc

对File进行操作,File中给出了一些常用的成员方法

delete:删除文件或者文件夹,这个方法不能直接删除整个多级文件,要删除文件需要一级一级的删除,只能删除空文件夹或者文件

renameTo:重命名方法,这个方法首先得有一个文件,然后再进行重命名,如果在别的盘符重命名有剪切的效果

isDirectory:判断是否是文件夹

isFile:判断是否是文件

这里讲一下File中的两个高级方法,list和listFile方法,前者是将一个盘符下的文件以及文件夹转换为一个字符串名称数组,后者是将一个盘符下的文件和文件夹转换为一个File数组。这两个方法可以用来找一些文件或者文件夹,例如找以.JPG文件等等。

这里也给出一个File操作的具体例子帮组理解:

例:File file4 = new File("E:\\aaa\\bbb\\ccc\\ddd") ;
public boolean mkdirs()
System.out.println("mkdirs:"+file4.mkdirs());

这段程序执行之后,打印出来的是一个true,表示创建成功,然后去e盘下找,可以看见一个aaa\\bbb\\ccc\\ddd目录。

原创粉丝点击