Java8——异常

异常:

面向对象过程中比较重要的一部分;

一旦产生异常之后,产生异常的语句和之后的语句将不再执行,并且会抛出异常结束程序;

我们要解决,异常产生之后,继续执行下面的语句;

处理异常:

异常处理的3个关键字:try 、catch、finally,其定义语法如下:

try{
    //有可能出现异常的语句
}[catch(异常类型 对象)]{
    //异常处理
}catch(异常类型 对象){
    //异常处理
}catch(异常类型 对象){
    //异常处理
}...][finally{
    不管是否出现异常,都统一执行的代码
}]

对于以上操作的组合形式:try..catch、try...catch...finally、try...finally(不建议)

出现异常之后要解决异常,为了对异常进行处理,可以使用异常类中的提供的printStackTrace()方法进行异常信息的输出;

public class test {
	public static void main(String[] args) {
		System.out.println("1:除法开始");
		try {
			System.out.println("2:除法计算" + (10 / 0));
		} catch (ArithmeticException e) {
			e.printStackTrace();
		}
		System.out.println("3:除法结束");
	}
}

异常处理流程:

所有异常都是Throwable的子类;

  • Error和Exception的区别?
  1. Error:指的是JVM错误,即此时程序还没有执行,如果没有执行,用户无法处理;
  2. Exception:指的是程序运行中产生的异常,用户可以处理

异常处理指的是Exception以及它的子类才可以进行异常处理;

面试题:异常处理流程图如下:

                              

catch里面直接写Exception e 即可,这样就可以捕获所有的异常,但是有两点说明:

  1. 在编写多个catch捕获异常的时候,捕获范围大的异常一定要放在捕获范围小的异常的后面;也就是Exception要放到最后;
  2. 虽然Exception可以捕获所有的异常,但是这样不好,因为异常会按照同一种方式进行处理;在严格的项目里面,分开处理异常会更好;

throws关键字:

throws关键字用于方法声明上,指的是当方法中出现异常之后交由被调用处进行处理;

也就是说调用了具有throws声明的方法后,不管操作是否会出现异常,都要利用try...catch进行处理;

主方法上面不要加throws,因为如果程序出错了,希望可以正常的结束程序;

throw关键字:

在程序中可以利用throw手工的抛出一个异常类的实例化对象;放在 try 里面

throw和throws的区别?

  • throw:指的是方法中人为的抛出一个异常类对象(这个异常类对象可以是自己实例化的或者是已经存在的)
  • throws:在方法的声明上使用,表示此方法在调用时必须处理异常;

异常处理标准格式:

class MyMath {
	public static int div(int x, int y) throws Exception {
		int result = 0;
		System.out.println("1:除法开始");
		try {
			result = x / y;
		} catch (Exception e) {
			throw e;
		} finally {
			System.out.println("3:除法结束");
		}
		return result;
	}
}

public class test {
	public static void main(String[] args) {
		try {
			System.out.println(MyMath.div(10, 0));	//出现异常之后交由被调用处进行处理;
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}

RuntimeException类:

RuntimeException类最大特征:程序在编译的时候不会强制交给用户处理,用户可以根据自己的需要进行处理,如果用户没有处理,将会交给JVM默认处理。RuntimeException子异常类,可以根据用户的选择进行处理;

RuntimeException与Exception类的区别?请列举常见的RuntimeException类?

  • Exception是RuntimeException的父类 ;
  • 使用Exception定义的异常必须要被处理,而RuntimeException的异常可以根据用户的选择进行处理
  • 常见的RuntimeException类异常:ArithmeticException(算数异常)、NullPointerException、ClassCastException。

断言(assert关键字);

Java中的断言指的是程序运行到某行代码的时候一定是预期的结果;

自定义异常:

如果想开发自定义的异常类,可以继承RuntimeException或者Exception类;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值