异常和文件

编程入门 行业动态 更新时间:2024-10-26 23:35:41
                  *****异常和文件*****

对于Java编程语言,异常处理对程序运行和异常都是很重要的手段。
一、异常的概念、原理机制
1.什么是异常?
通俗理解:异于平常,本来一件事情正常执行,可能中途会有特殊情况,导致当前事情无法正常执行而影响执行结果,这个中途特殊情况即异常。
例如:a/b这个操作,正常情况是没有任何问题,但是隐藏了一个问题,如果b为0,则这个除法操作将无法执行,则b为0的情况属于a/b这件事情的异常情况
2.Java异常及特点
1)java异常是java程序运行过程中出现的非正常情况
2)异常在程序中如果不做处理,会导致程序中途瘫痪,不能正常完成特定功能
3)异常一般情况是需要通过java异常处理机制给屏蔽或者处理掉
4)特点:
i. Java异常处理是面向对象处理方式
ii. 一旦代码出现异常问题,JVM底层则会创建一个异常类相关的对象
iii. 异常对象产生后,会根据代码对异常的处理机制进行操作,其中异常处理机制包括捕获异常和抛出异常两种,如果没有异常操作,则java程序会中断执行
5)异常体系结构:
异常的祖宗类:Throwable->Exception、error
异常分类:检测异常(受检异常、非运行时异常):IOException等
非检测异常(非受检异常、运行时异常):NullPointException等
6) 如何对异常进行处理:
(1)捕获异常:try…catch方式:ArithmeticException数学运算异常
a)异常处理之后,程序不会中断
b)异常捕获是可以多层捕获的(支持多个catch语句)
c)捕获异常一定要精确
d)如果说无法确定异常类型,则可以直接捕获Exception异常来处理
e)Catch语句从上到下捕获多个异常,必须从小到大定义或者同级别
f)Catch中如果捕获了检测性异常,则try必须要有这种异常抛出的代码
(2)finally:最终-异常捕获的统一出口
a)finally的语句块一旦定义了,就一定要执行,要么你就不定义
b)try、catch、finally必须要至少两个存在,而且try必须要有
c)问题:如何让已经定了finally代码块的代码不执行?
答案:try{………..;System.exit();}finally{…….;}或者守护线程被终止时
d)return语句:finally之前执行
(3)throws:把异常问题抛出
a)抛出给上一级调用此方法的代码,任凭调用此方法的代码处理
b)抛出问题后,此方法会瘫痪,但是程序会继续
(4)throw:指在catch中抛出指定异常
3.异常处理原理图:

二、异常处理机制之捕获异常
try和catch:
try{
//可能出现异常的代码部分
}catch(异常类型 异常变量){
//执行异常操作
}catch(异常类型 异常变量){
//执行异常操作
}…
finally{
//处理完try与catch操作后的收尾操作,异常统一出口
}
异常捕获注意事项:
1)catch定义,由上到下,异常类的范围必须由小到大或者同级别的
2)运行时异常,catch中可以随意定义类型,程序运行时,会根据catch参数自动匹配
3)非运行时异常,则catch中定义的异常,在try代码块中必须存在,如果没有类似异常存在,则不允许被定义。
4)finally关键字,在进行异常处理之后,在异常的处理格式中还有一个finally语句,此语句将作为异常的统一出口,不管是否产生异常, 最终都要执行此段代码
5)如果try中有return语句,则会先执行return语句,后执行finally,最后返回整个方法
三、捕获异常之抛出异常
throws和throw:
public void test() throws 异常类型{
//存在异常的代码块
}
抛出异常处理案例:
public class Test{
public static void main(String[] args){
Test t=new Test();
try{
t.b();

    }catch(ArithmeticException e){
        e.printStackTrace();
    }
    System.out.println("main方法执行完毕");
}
public void b() throws ArithmeticException{
    this.a();
    System.out.println("方法b执行完毕");
}
public void a() throws ArithmeticException{
    int a=10;
    int b=0;
    int result=a/b;
    System.out.println("方法a执行完毕");
}

}
运行结果:
java.lang.ArithmeticException:/by zero
at Test.a(Test.java:19)
at Test.b(Test.java:13)
at Test.main(Test.java:6)
main方法执行完毕
原理分析:
1)main方法调用了b方法,b方法调用a方法
2)a方法a/b存在异常抛出后,a方法中断
3)b方法调用a方法获取到了a方法的异常,抛出后中断执行
4)main方法获取到b方法抛出的异常捕捉后,继续往后执行,不中断

抛出异常处理机制:throw抛出异常对象
此操作主要是对当前产生的异常对象进行抛出操作,常用的处理格式是结合try…catch和throws一起使用
例如:
public void test() throws 异常对象类型{
try{
//存在异常的代码块
}catch(异常类型 变量名){
throw 异常对象;
}
}

throw异常对象注意:
1)throw一般存在于catch语句当中,用于出现异常后的一种操作方式
2)捕捉的异常和抛出的异常不一定相同,可以不一样
3)throw抛出的异常对象如果是检测异常,则所在的方法必须要通过throws显性抛出
4)throw抛出的异常对象如果是非检测异常,则方法上可以选择性定义throws
自定义异常:
1.自定义异常一般是自己定义一个类来扩展Exception类
2.格式:public class 自定义异常类名 extends Exception{}
例如:public int b(int a,int b) throws Exception{
int r = 0;
try{
r = a/b;
}catch(ArithmeticException e){
System.out.println(“我自己解决了问题”);
throw new Exception(“这是个大问题”);
}
System.out.println(“b方法计算了出了结果”);
return r;
}
3.自定义异常一般适用于throw代码块抛出
四、文件操作(File)
A)什么是计算机文件?
计算机文件(或称文件、电脑档案、档案),是存储在某种长期储存设备上的一段数据流。所谓“长期储存设备”一般指硬盘、U盘、光盘等。其特点是所存信息可以长期、多次使用,不会因为断电而消失。
B)计算机存储介质
硬盘:容量非常的大,速度一般,而且可以实现永久存储,电脑程序就存在那里
内存:容量比较小,速度快,是CPU工作的地方,对系统性能影响很大,CPU工作的时候就会把硬盘中要运行的程序先调到内存中才能处理
缓存:容量最小,但速度最快,为了协调CPU的高速度和内存的相对低速度的缓冲区域,一般在CUP上
C) File类:关联计算机中的文件和目录(文件夹)
D) API:读取文件的文件信息(不包括文件的数据):文件大小、类型、文件名、路径…
1)createNewFile:创建一个新的文件,但是一定要注意,文件可以不存在,路径一定要存在
2)mkdir:创建一个新的文件夹
3)//创建一个文件:createNewFile\mkdir
4)//删除一个文件:delete
5)//查找文件:exit、listFiles

方 法 原 型 说 明
boolean exists() 判断文件是否存在,存在返回true,否则返回false
boolean isFile() 判断是否为文件,是文件返回true,否则返回false
boolean isDirectory() 判断是否为目录,是目录返回true,否则返回false
String getName() 获得文件的名称
String getAbsolutePath() 获得文件的绝对路径
long length() 获得文件的长度(字节数)
boolean createNewFile()
throws IOException 创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉
boolean delete() 删除文件,删除成功返回true,否则返回false
File[] listFiles() 返回文件夹内的子文件与子文件夹的数组

更多推荐

异常和文件

本文发布于:2023-06-10 22:35:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1349004.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:异常   文件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!