JAVA异常处理总结

异常处理:

在写Java程序时,异常处理是比较重要的地方,所以刚刚参考书中的相关章节,把异常处理的知识系统整理了一下。

一)异常的产生:

1)在程序运行时由 Java 虚拟机创建和抛出的异常

2)在 Java 类库的函数中创建和抛出的异常

3)程序员自己的函数中创建和抛出的异常

 

二)抛出异常:

异常的抛出需要 throw 关键字。在定义一个函数时,如果在这个函数内部可能会抛出某种类型的异常,那么要在函数名的后面用 throws 关键词声明一下。

异常其实就是类的对象,因此可以自己定义异常类。

例如:

 

[java] view plain copy

  1. public class NotEnoughMoney extends Exception{  
  2. //定义了一个异常类  
  3.     public NotEnoughMoney(){}  
  4.     public NotEnoughMoney(String msg){  
  5.         super(msg);  
  6.     }  
  7. }  

异常的抛出:

[java] view plain copy

  1. public static void GetMoney(int money) throws NotEnoughMoney{  
  2.     ...  
  3.     if(money>my_money)  
  4.         throw NotEnoughMoney();            //抛出异常  
  5.     ...  
  6. }  

如果在定义一个函数时,声明它可能会抛出异常,就像 GetMoney(int money),那么对用调用该函数的代码来说,就必须对这个异常进行处理,否则就会编译出错。处理的方法主要有两种:

1)使用 try....catch...... 结构来捕获

[java] view plain copy

  1. public static void BuyStuff()  
  2. {  
  3.     try{  
  4.         GetMoney(200);       //调用了函数GetMoney(),该函数可能会抛出异常  
  5.         System.out.println("done\n");  
  6.     }catch(NotEnoughMoney e){  
  7.         System.out.println("error: don't have enough money!\n");  
  8.     }  
  9. }  

2)不进行任何处理,重新声明抛出

[java] view plain copy

  1. public static void BuyStuff() throws NotEnoughMoney{  
  2.     GetMoney(200);              
  3.     //调用了GetMoney()函数,该函数可能会抛出异常,在调用BuyStuff()函数的代码中重新抛出  
  4.     System.out.println("done!\n");  
  5. }  

对于 try....catch...... 结构,好比是当前函数就能够拍板拿主意,所以就直接处理了;而对于 throw,好比是当前函数拿不定主意,不知如何处理,所以就把问题上报了。

 

三)异常的类型

1)非检查型异常

系统不要求程序捕获的异常,如数组越界、除零等,编译器在编译时不会进行检查,但在运行时,如果出现了这些情形,就会产生相应的异常。(RuntimeException及其子类)

2)检查型异常

程序必须对这种异常进行处理,要么捕获,要么抛出,否则就无法编译通过。

如 Exception, ClassNotFoundException, IOException, FileNotFoundException, EOFException

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值