异常

异常

1)定义

异常(Exception)即例外,程序没有按自己预想的结果运行出来,出现了非正常情况,即“程序得病了”。

2)分类
  • 所有的异常都是从Throwable继承而来的,它是所有异常的共同祖先。
  • Error和Exception分别是它的两个子类
  • Unchecked Exception为Error的子类
  • Checked Exception与Runtime Exception为Exception的子类

其中,CheckedException检查时异常|编译时异常:是在编译时出现的,如果不处理,程序无法执行。

RuntimeException运行时异常:是在程序运行的时候出现,简单的可以通过增强程序的健壮性来处理(if判断)

3)常见的运行时异常
  • 空指针 NullPointerException
  • 数组索引越界 ArrayIndexOutOfBoundsException
public class test1 {
	public static void main(String[] args) {
		heihei(-1);
	}
	static void heihei(int i){
		if(i<0){
			throw new ArrayIndexOutOfBoundsException();
		}
	}
}
  • 类型转换异常 ClassCastException
  • 数学异常 ArithmeticException
System.out.println(4/0);

  • 负数异常 NegativeArraySizeException
  • int[] arr=new int[-5];
    

  • 数字格式异常 NumberFormatException
  • throw :制造异常
  • static void heihei(int i){
    		if(i<0){
    			throw new ArrayIndexOutOfBoundsException();
    		}
    	}
    
    4)异常处理方式
    1、throws:抛出异常

    抛出异常,当前不处理,异常抛出到上一层,方法的内部把异常抛出到方法上面,谁调用这个方法,谁处理

    //方法重写:如果父类方法存在异常抛出
    //子类重写方法抛出异常范围<=父类
    interface Fu{
    	public void test() throws FileNotFoundException;
    }
    
    class Zi implements Fu{
    	public void test() throws FileNotFoundException{
    		throw new FileNotFoundException("文件找不到了...");
    	}
    }
    
    2、try…catch  捕获异常

    在当前位置遇到异常的时候就处理,捕获某个异常对象,使用异常的功能

    try{
     			可能会出现异常的代码;
     	}catch(StringIndexOutOfBoundsException e){
     		e....
     		如果出现这个类型的异常,就执行的代码
     	}catch(NullPointerException e){
     		...
     	}catch(FileNotFoundException e){
     		...		
     	}catch(Exception e){
     		....
     	}finally{
     		无论是否出现异常,肯定会执行的代码
     	}
    

    注:

  • 如果try中遇到异常了,try中下面的代码不会执行,直接去执行对应catch中的内容,如果没有遇到异常,正常执行所有的try中代码
  • 一个try后可以跟一到多个catch,捕获小范围的异常catch写在上面,否则下面的catch执行不到
  • finally中的内容无论当前try...catch结构是否遇到异常都会执行其中的代码,与前面的try..catch是一个结构
  • 3、自定义异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值