Exception

异常的概述

Throwable类是Java语言中所有错误Error和异常Exception的Throwable类

Throwable:

----Error:错误的意思
----StackOverflowError:当堆栈溢出发生时抛出一个应用程序递归太深。
----NoClassDefFoundError:找不到或无法加载主类
----NoSuchMethodError:没有此方法错误
----OutOfMemoryError :内存溢出错误
*

Exception:异常的意思

  •          ----NullPointerException: 空指针异常
             ----ArrayIndexOutOfBoundsException:数组下标/角标越界异常
             ----AritchmeticException:算术异常
             ----ClassCastException:   造型异常    类转换异常
    

异常的分类

Exception:

编译时异常:编译的时候就会有异常,除了运行时异常,就是它了。
它必须处理才能运行:处理有两种方式(一种抛出异常,二种抓)

 ----FileNotFoundException: 找不到文件异常
 ----InterruptedException:  中断异常        
 运行时异常RuntimeException:RuntimeException及其子类都是运行时异常
 可以编译通过,能运行,运行的时候报异常,不需要处理可以运行,但是有异常还是有异常
   -------ArithmeticException :   算术异 -------NullPointerException:  空指针常
 -------ArrayIndexOutOfBoundsException:数组下标越界异常。
 -------ClassCastException  :  造型异常

处理异常的方式

throws抛出异常的特点:
抛出异常要一直抛出,直到抛到最终点,抛给main函数。
如果有异常,结果还是有异常,只不过可以运行。
抛出异常可以让编译时异常可以运行,运行如果有异常还是有异常。
抛出异常,不会执行后面的代码。
  • 抓异常的格式:
  •  try{
    
  •        这里面放可能出现异常的代码;  
    
  •  }catch(异常的类名      对象名){
    
  •        有异常以后,处理异常的代码;
    
  •        如果没有异常,就不会执行;
    
  •  }
    

try catch的特点:
抓异常以后,不用再抛出
抓异常以后,后面的代码还可以执行,try里面紧跟的代码是不能执行的。
手动抛出异常:可以根据你的意思来抛出异常

throw跟throws的区别:
throw是在方法体中,throws是在方法声明上。
throw是抛出异常对象。throws是抛出异常类名。
throw是可以根据你的标准来抛出异常。

4. 获取异常信息的三种方法

获取异常信息三种方式:
	getMessage()  :  获取异常信息  是一个值
	toString()    :  获取异常类名和异常信息    是一个值
 	printStackTrace():打印输出异常类名,异常信息和异常行号。是void型的函数,不是一个值

5. Try catch catch

处理多个异常的格式:
  •  try{
    
  •      可能出现异常的代码;
    
  •      可能出现异常的代码;
    
  •      可能出现异常的代码;
    
  •  }catch(){
    
  •      处理一个异常信息
    
  •  }catch(){
    
  •       处理另一个异常信息
    
  •  }.....
    
     try {
       FileReader   fileReader=new   FileReader("aa.txt");
      Thread.sleep(100);
     	} catch (FileNotFoundException | InterruptedException e) {
     e.printStackTrace();
     }
    

6. Finally

格式:
  •  try{
    
  •  }catch(){
    
  •  }catch(){
    
  •  }.....{
    
  •  }finally{
          不管有没有异常,都会执行!   return都不能阻止它的脚步   
                                除非System.exit(0);结束jvm
    
  •  }
    
final跟finally的区别:
final:
 1.修饰类,类不可以被继承
 2.修饰函数,函数不可以被重写,复写,覆盖。可以重载。
 3.修饰变量,变量是常量。
finally:
 1.是跟try catch组合,不管有没有异常都会执行。


	try {
	 int     a=1/1;    //注意:这里面不能有编译时异常,要不然会报错
//有运行时异常没关系
} finally {
 System.out.println("执行了finally");
}

7. 自定义异常

 自定义普通的异常:如果说输入的数字不符合我们的功能,然后就报异常。

1.创建一个类继承Exception类。Exception类是编译时异常。
2.写两个构造函数,一个有参数的,一个无参数的。

自定义运行时异常:

1.创建一个类继承RuntimeException
2.创建两个构造函数。一个有参数的,一个无参数的。

注意:要把异常信息传给父类super(message),要不然输出不了异常信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值