异常

一、概念


异常就是Java代码在运行时期发生的问题就是异常。


在Java中,把异常信息封装成了一个类。当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置、原因等)。


二、分类




错误VS异常:


错误:指程序在运行期间发生了某种错误(Error),Error错误通常没有具体的处理方式,程序将会结束运行。无法针对处理错误,只能修正错误。


异常:指程序在编译、运行期间发生了某种异常(Exception),我们可以对异常进行具体的处理,若不处理异常,程序将会结束运行。


三、抛出异常


throw关键字:它用来抛出一个指定的异常对象


步骤:1.创建一个异常对象,封装一些提示信息

      2.通过throw将异常对象告知调用者


public static int intException (int[] arr) throws Exception{
		//是否为空
		if (arr==null){
			throw new Exception("数组为空");
		}
}

四、处理异常


throws:将问题标识出来,报告给调用者,如果方法内通过throw抛出了编译时异常,而没有捕获处理,那么调用者将异常再次抛出给其调用者。


       //主方法  
       public static void main(String[] args) throws Exception{
		int[] arr=null;
		int num=intException(arr);
		System.out.println(num);
	}
	public static int intException (int[] arr) throws Exception{
		//是否为空
		if (arr==null){
			throw new Exception("数组为空");
		}
		int i=(arr.length-1)*2;
		return i;
	}

try..catch..finally:捕获异常处理


       //主方法      
       public static void main(String[] args) {
		int[] arr={1,2};
                //尝试运行代码
		try {
			getException(arr);
                //捕获运行中的异常进行处理
		}catch (Exception e) {
			System.out.println("有异常");
                //一定会执行的代码
		}finally{
			System.out.println("一定会执行的");
		}
	}

五、异常在方法中的重写


1.子类覆盖父类方法时,如果父类的方法声明异常,子类只能声明父类异常或者该异常的子类,或者不声明。


2.当父类方法声明多个异常时,子类覆盖时只能声明多个异常的子集。


3.当被覆盖的方法没有异常声明时,子类覆盖时无法声明异常的。


六、自定义异常类


自定义异常类NoAgeException:


//创建异常类继承于Exception类
class NoAgeException extends Exception{
	//重写父类构造方法
	public NoAgeException() {
		super();
	}
	//重写父类有参构造方法
	public NoAgeException(String message) {
		super(message);	
	}
}

Person类的构造方法:


        //在Person类的构造方法中进行异常抛出
	 public Person(String name, int age) throws NoAgeException{
		super();
		//加入逻辑判断
		if(age<0 || age>200){
			//使用类NoAgeException中有有参构造方法
			throw new NoAgeException(age+",年龄数值非法");
		}
		//参数赋值
		this.name = name;
		this.age = age;
	}


七、Throwable类中方法


catch中部分代码:


catch (ArrayIndexOutOfBoundsException e) {
			System.out.println(e.getMessage());
			System.out.println(e.toString());
			e.printStackTrace();
}

控制台显示:


 


小结:


异常的重点就是异常处理:throws和try..catch..finlly的恰当应用,以及API中不同异常的分类和使用,还有源代码的查看。对于不同错误有不同的对应措施和修改。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值