异常笔记

异常笔记

1.概念

异常是描述一些不同正常的意外的情况,作用是提高程序的健壮性。java中引入了异常处理机制来保证程序的健壮性

2.异常分类

检查异常:一种编译时需要处理的异常,在编译期间收到检查
运行时异常:在程序中发生的异常,编译不受检查

凡是RuntimeException及其子类都是运行时异常,其他异常都是检查异常

3.异常体系

Throwable:可抛出的

  • Error: 错误,不应该由程序员捕获处理
    • VirtualMachineError:虚拟机异常
      • InternalError
      • OutOfMemoryError
      • StackOverFlowError
  • throws 名词,声明方法存在异常,调用时需要处理
  • throw 动词,主动抛出异常对象
    • 检查异常对象,throws被强迫声明
    • 运行时异常,不会被检查
  • Exception; 异常
    • RuntimeException
      • NullpointException 空指针异常,对一个空的引用调用属性和方法
      • IndexOutBoundsException 数组下标越界,使用非法下标
      • ClassCastException 类型转换异常,多态向下转型
      • NumberFormatException 数字格式化异常,字符串转数字
      • StackOverFlow:栈溢出异常,无限递归
      • ArithmetiocException 算是异常
      • ParseException 解析异常
    • IOException
4.异常处理

java中异常处理使用try、 catch、 finally、 thow、 throws 关键字

try/catch:

语法:   
try{
        //发生异常的代码
    }catch(Exception e){
        //处理异常
        e.printStackTrace();
    }finally{
        //最后的操作,无论发生什么都要执行
    }
1.顺序为 try [catch | finally]+
    1.检查异常要求必须捕获处理
       try{

          }catch(Exception e){

          }
    2.对于运行时异常通常不要求捕获处理
       try{

           }finally{

           }
           特殊用法,保证某些代码必须执行

对于运行时异常,通常不要求处理。

try可以跟多个catch , 小异常在前大异常在后
try 尝试捕获多种异常,使用 一个大异常集中处理。

5.异常抛出

throw 与 throws

throws : 名词,声明方法存在异常,调用时需要处理。

throw: 动词 ,抛出异常对象。

将来如果你的程序出现异常,一定操作一定是违背了某些要求。

6.自定义异常

为什么要自定义异常? 每个异常类都是为了表示某个特定的意外情况,现有的异常可以通过异常体系中的异常类表达。在实际开发中,使用自定义异常来描述业务逻辑上的意外情况。

  1. 自定义异常
//自定义一个异常类
class TicketsNotEnough extends Exception {

	public TicketsNotEnough() {
		super();
	}

	public TicketsNotEnough(String message) {
		super(message);
	}
}
  1. 使用异常类
public static void salesTickets(int num) throws  TicketsNotEnough {
		 if( num<=total ) {
			 total-=num;
			 System.out.println("卖出"+num+"张票");
		 }else {
			 throw new TicketsNotEnough(); // 在符合抛出异常条件的地方, 创建异常对象并抛出
		 }
}

异常细节补充:

  1. 方法重写,之类或实现类,不允许抛出跟宽泛的异常
  2. 有返回值的方法中,finally 和 return 的执行顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值