异常Exception 主要分类 异常的捕获与抛出 自定义异常

异常的概述

 异常就是不正常的意思,Java语言中主要指程序在运行阶段产生的错误。
 Throwable(可抛出的,可扔出的)
 java.lang.Throwable类是Java程序所有错误或异常的超类
 
 主要有两个子类:
  Error:
   Error主要描述比较严重的错误,无法通过编程来解决的重大的错误。
   
  Exception:
   Exception主要描述比较轻量级的错误,可以通过编程来解决的。

Exception类的主要分类

 RuntimeException - 运行时异常,也叫作非检测性异常类
  	- 作非检测性异常类就是指编译阶段无法被编译器检测出来的异常。

 IOException和其他异常类 - 其他异常类,也叫做非检测性异常类。
 
 RuntimeException类的主要子类有:
   	ArithmeticException - 算数异常类
   	ArrayIndexOutOfBoundsException(间接子类) -  数组下标越界异常 
   	NullPointerException - 空指针异常
   	ClassCastException - 类型转换异常
   	NumberFormatException(间接子类) - 数字格式异常 

当程序的执行过程中产生异常,若没有手动进行处理 则有java虚拟机采用默认的方法是处理,默认方式
就是打印异常名称、异常原因以及异常发生的位置并终止程序,后续的代码无法被执行。

运行时异常的处理方式

  • 对于绝大数运行时异常来说,都可以通过条件判断来避免异常的发送。

异常的捕获

 (1)语法格式
  try{
   可能产生异常对象的语句块。
  }catch(异常类型  引用名){
   针对当前异常类型对象的处理语句块;
  }
  ...... (可以写多个catch)
  finally{
   无论是否发生异常都应该执行的语句块。
  }
  
 (2)注意事项
  当捕获异常的结构中有多个catch分支时,切记小范围的异常类型放在大范围的异常类型上面
  懒人的写法:
   catch(Exception e){......}
   
 (3)执行流程
  try{
   a;
   b;可能产生异常的语句
   c;
  }catch(Exception e){
   e;
  }finally{
   f;
  }
  当没有产生异常的时候,程序的执行流程时:a b c f 
  当产生异常时,程序执行流程是 a b e f 

异常的抛出

 (1)基本概念
	  在某些特殊的场合中,当产生异常后却无法直接处理的/不想处理时,此时就可以将异常转移
	  给当前方法的调用着,这就叫异常的抛出。
	  
 (2)语法格式
  	返回值类型    方法名称(形参列表) throws 异常类型{...............}
  	
 (2)方法重写的原则
	  a.要求方法名相同、参数列表相同、返回值类型也相同,从jdk1.5开始允许返回子类类型。
	  b.访问权限不能变小,可以相同或者变大。
	  c.不能抛出更大的异常

	子类中重写以后的方法可以选择抛出与父类一样的异常、更小的异常、不抛出异常,
	但是不能抛出更大的异常、不同的异常。

自定义异常

 (1)自定义异常的由来
 	java官方库中虽然提供了大量的异常类,但不足以描述现实生活中所有的异常情况,当出现官方库中
 	没有描述的异常情况时候就需要程序员自定义异常类加以描述,使得异常信息更加具备针对性和可读性。
 	
 (2)自定义异常的流程	
	a.自定义类继承Exception类或者Exception类的子类
	b.提供两个版本的构造方法,一个是无参构造方法,另一个是字符串做参数的构造方法

异常对象的抛出

 throw new 异常类型()
 
 例如:
  throw new Exception()

throw和throws的区别?

 throws
  用在方法声明后面,跟的是异常类名
  可以跟多个异常类名,用逗号隔开
  表示抛出异常,由该方法的调用者来处理
  throws表示出现异常的一种可能性,并不一定会发生这些异常
  
 throw
  用在方法体内,跟的是异常对象名
  只能抛出一个异常对象名
  表示抛出异常,由方法体内的语句处理
  throw则是抛出了异常,执行throw则一定抛出了某种异常  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值