java基础知识点:异常

异常指程序在【编译时】或者【运行时】不正常的现象。

Java是一种面向对象的语言,Java的设计们考虑到开发者经常会遇到一些问题,它们把经常遇到的问题封装成了类
一旦程序出现问题,其实底层就会创建对应的异常对象。开发者可以根据异常对象的信息,去发现程序的问题。

异常的继承体系
	Throwable
		--Exception 【编译时异常】
			除了RuntimeException,其他的都是编译时异常
			特点:编译时有红色波浪线

			--RuntimeException 【运行时异常】
			它和它的子类都是运行时异常
			特点:在运行时程序报错

		--Error 【错误】
			无法解决的严重的错误
		
1. throw关键字
	throw: 用来产生(制造)一个异常对象
	//产生(制造)了一个索引越界的异常 
	throw new IndexOutOfBoundsException("3"); //3索引越界了
	
	一般用法:在写一个方法的时候,对参数进行合法性的校验,如果校验不合法就可以给调用者产生一个异常对象
	public void method(ArrayList<String> list,int index){
		if(list==null){
			throw new NullPointerException();
		}
		
		if(index>=list.size()){
			throw new IndexOutOfBoundsException(index+"");
		}
		
		String s=list.get(index);
		System.out.println(s);
	}
	
2. throws和try...catch
	throws: 用来在方法上声明一个异常(一般声明编译时异常即可)
	当调用者调用这个有 throws 声明异常的方法,就会有编译报错的提示。
	
3. try...catch: 自己异常
	
    Date date = null; 
    try {
		//解析:字符串-->Date:会产生了编译时异常
        date = sdf.parse("2019/08/08");
    } catch (ParseException e) {
        //e.printStackTrace();
        System.out.println("有异常、需要处理");
    }
	
	注意:catch可以写多个,但是较大的异常必须写在最后。

4. 对于异常的处理
	1.是运行时异常、直接改代码
	2.如果编译时异常,可以使用try...catch处理,或者throws声明

5. finally: 和try...catch结合起来使用的
	try{
		
	}catch(异常类 e){
		
	}finally{
		//不管异常发不发生,finally里面的代码都必须执行。
	}

6. 自定义异常类
	第一步:自定义一个异常类  extends RuntimeException 或者 Exception
		注意: 异常的【类名最重要】,见名知意
	第二步:写上构造方法(空参数、有字符串参数的) 
		
	//自定义异常类
	public class FlaseMoneyException extends Exception {
		public FlaseMoneyException() {
		}

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

	public class Demo3 {
		public static void main(String[] args) throws FlaseMoneyException {
			//调用有异常的方法
			sale(7);
		}
		//方法中产生一个自定义异常 
		public static void sale(int money) throws FlaseMoneyException{
			if(money==5){
				System.out.println("买一瓶脉动");
			}
			if(money==10){
				System.out.println("买二瓶脉动");
			}
			if(money==7){
				throw new FlaseMoneyException(money+": 没有这种面值,报警了,等着");
			}
		}
	} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值