Java基础学习之异常与文件

一、捕获异常

1、异常的理解:异于平常,本来一件事情正常执行,可能中途会有特殊情况,导致当前事情无法正常执行而影响执行结果,这个中途特殊情况即异常。在程序中,程序运行过程中的意外情况

例如:a/b这个操作,正常情况是没有任何问题,但是隐藏了一个问题,如果b为0,则这个除法操作将无法执行,则b为0的情况属于a/b这件事情的异常情况

package com.test.exercise6;

public class ExceptionTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new ExceptionTest().add(10, 0);// 如果这里第二个参数为0,则会报错
	}

	/**
	 * b不能为0
	 * 
	 * @param a
	 * @param b
	 * @return
	 */
	public int add(int a, int b) {
		return a / b;
	}
}
出现错误:



这就是异常的例子。

2、异常处理机制特点:Java异常处理是面向对象处理方式

             一旦代码出现异常问题,JVM(Java虚拟机)底层则会创建一个异常类相关的对象,异常对象产生后,会根据代码对异常的处理机制进行操作,其中异常处理机制包括捕获异常抛出异常两种,如果没有异常操作,则java程序会中断执行

3、为什么要处理异常:异常在程序中如果不做处理,会导致程序中途瘫痪,不能正常完成特定功能

4、如何处理异常:

1)检测性(非运行时)异常特点:直接继承于Exception这个类,必须要处理,不处理,编译不通过

2)非检测(运行时)异常特点:直接继承于RuntimeException这个类,可以不处理,但是运行时候可能会抛异常出来

注意:finally代码块:是异常的统一出口,所有程序代码流程必然会走finally执行,但是finally可以不写

捕获异常格式:

try{
//可能出现异常的代码部分
 }catch(异常类型 异常变量){
//执行异常操作
}catch(异常类型 异常变量){
//执行异常操作
 }…
finally{
    //处理完try与catch操作后的收尾操作,异常统一出口

一般情况下:

try{
//可能出现异常的代码部分
 }catch(Exception e){//这样就不用担心捕获的异常不准确,也不用写很长的代码了(仅仅限于运行时异常的捕获)
//执行异常操作
}

异常捕获注意事项:

1catch定义,由上到下,异常类的范围必须由或者同级别

2

(i)运行时异常,catch中可以随意定义类型,程序运行时,会根据catch参数自动匹配

 (j)非运行时异常,则在catch中定义的异常在try代码块中必须存在,如果没有类似异常存在,则不允许被定义

3finally关键字,在进行异常处理之后,在异常的处理格式中还有一个finally语句,此语句将作为异常的统一出口,不管是否产生异常,最终都要执行此段代码

4如果try中有return语句,则会先执行return语句,后执行finally,最后返回整个方法

例子:

package com.test.exercise6;

public class ExceptionTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println(new ExceptionTest().add());
	}

	/**
	 * b不能为0
	 * 
	 * @param a
	 * @param b
	 * @return
	 */
	public int add() {
		int a = 20, b = 10, result = 0;
		System.out.println("执行了add");
		try {
			result = a / b;
			return add2();// 先执行这条return语句
		} catch (Exception e) {
			System.out.println("执行到这儿了");
		} finally {
			System.out.println("执行了finall");// 再执行finally语句
		}
		return result;// 返回这个方法
	}

	public int add2() {
		System.out.println("执行了add2");
		return 1;
	}
}
结果:


 异常的继承体系


二、抛出异常

1、throws:此异常主要是针对存在异常的代码块出现的异常问题,中止当前方法的执行此方法把异常问题抛出给调用此方法的上一级函数当中,并调用出自行处理异常

例子:

package com.test.exercise6;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class ExceptionTest {

	/**
	 * @param args
	 * @throws FileNotFoundException
	 */
	public static void main(String[] args) throws FileNotFoundException {
		ExceptionTest et = new ExceptionTest();
		et.add();
		System.out.println("OK3");
	}

	/**
	 * 
	 * 
	 * 
	 * 
	 * 
	 * @throws FileNotFoundException
	 */
	public void add() throws FileNotFoundException {
		System.out.println("OK");
		FileInputStream file = new FileInputStream("text");// 执行到这里,中断了,后面的代码都没有运行
		System.out.println("OK2");
	}
}
结果:


1)格式:方法后面添加:throws异常类型

public void test() throws 异常类型{
	//存在异常的代码块
}

2)说明:方法抛出异常后,异常就会丢给调用这个方法的那一行代码

  (i)如果抛出的异常是检测性异常:则调用这行代码的方法必须要处理(捕获,抛出)

  (j)如果抛出的是非检测性异常:则调用这行代码的地方可以选择性处理

 

2、throw: 此操作主要是对当前产生的异常对象进行抛出操作;常用的处理格式是结合try...catch和throws一起使用,在异常块的catch里面处理的

public void test() throws 异常对象类型{
	try{
		//存在异常的代码块
	}catch(异常类型 变量名){
		throw 异常对象;
	}
}

     说明:如果在catch中使用了throw,一般的情况下在方法上必须要使用throws 

注意:

(1)throw一般存在于catch语句当中,用于出现异常后的一种操作方式
(2)捕捉的异常和抛出的异常不一定相同,可以不一样
(3)throw抛出的异常对象如果是检测异常,则所在的方法必须要通过throws显性抛出
(4)throw抛出的异常对象如果是非检测异常,则方法上可以选择性定义throws

三、自定义异常:一般是自己定义一个类来扩展Exception类

1、格式:public class 自定义异常类名 extends Exception{}

2、自定义异常一般适用于throw代码块抛出


四、文件

       File类是java中提供给程序操作硬盘文件的方式,可以来获取当前关联硬盘文件的相关属性,包括文件名、路径、大小、修改日期等。

   注意:File类不能直接读写文件中的内容,只能查看和操作文件本身

    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值