Java异常机制

异常是一种提醒机制,识别和响应错误情况的机制,提高代码的健壮性,易于调试

Throwable是所有异常类的父类

1.try...catch...

语法:try{可能发生错误的代码块}catch(异常类型 变量){异常处理方案}

jdk1.7之后,可以写成try(资源开启语句;){高风险代码}catch(异常类型 变量){ 处理措施}

try处理异常一般常在客户端

		try {
			//这里发生异常,则try之后的代码都不会执行
			FileInputStream fis = new FileInputStream("");
		} catch (FileNotFoundException e) {
			//打印错误信息和栈帧,一般用于程序员排错
			e.printStackTrace();
			//获取异常信息,一般返回给客户端
			e.getMessage();
		}
		//try...catch...不会让程序出现异常而终止
		System.out.println("=--=--=--=--=");

//可以有多个catch,多个catch的异常类型之间不是父子关系就是没有继承关系
        try {
            int[] ints = null;
            ints[0] = 1;
            FileInputStream fis = new FileInputStream("");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch(NullPointerException e) {
            e.printStackTrace();
        }
        //也可以让多个异常用 | 分开,这样写异常类型之间不能有继承关系,有继承关系就写父类
        try(FileInputStream fis1 = new FileInputStream("");
                ){
            int[] ints = null;
            ints[0] = 1;
        }catch(IOException | NullPointerException e){
            e.printStackTrace();
        }

finally用于异常处理中,和try或者try...catch...一起使用,不论try里面是否发生异常,都会执行finnally里面的代码。finnally和catch里面都有return时,最后执行返回的是finnally里面的return。

2.throws

throws抛出异常,一般常用于服务端,并不会进行处理,会把问题抛给上家

当调用的方法抛出了异常时,调用处需要进行异常处理或者抛出异常,throws可抛出多个异常,之间逗号分隔

throw会抛出一个异常对象,并终止程序,谁调用throw的方法,就会抛给谁异常

public static void main(String[] args) throws FileNotFoundException {
//		FileInputStream fis = new FileInputStream("");
		System.out.println("执行");
		// throw用于抛出一个具体的异常对象,终止程序
		try {
			m1();
			System.out.println("这里将不执行");
		} catch (CustomizeException e) {
			e.printStackTrace();
//			System.err.println(e.getMessage());
		}
	}

	public static void m1() throws CustomizeException {
		// 谁调用我,我就抛给谁异常,调用方法处
		throw new CustomizeException("自定义异常");
	}

补充:重写需要子类不能抛出更宽泛的异常-->子类方法抛出的异常要比父类抛出的异常相同或者是其子类,或者没有异常。

3.自定义异常

自定义异常,只需要定义一个类并继承一个已知的异常类,并加两个公共的构造方法,一个有参构造方法,将错误信息传递给父类,一个无参构造方法。

Exception异常是编译时异常,运行时异常不需要对可能报错的代码进行预异常处理

public class CustomizeException extends Exception{

	public CustomizeException() {
		super();
	}

	public CustomizeException(String message) {
		super(message);
	}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值