java程序在执行过程中发生的异常事件可分为两类

Error:java虚拟机无法解决的严重问题,如jvm系统内部错误,资源耗尽,内存溢出等。这种情况改代码吧 Exception:其他因为程序错误或偶然在外因素导致的一般性错误,可以编写一些针对的代码进行这种异常处理

发生异常后,会在异常处生成一个异常类型的对象抛出,异常之后的代码都不执行

1. try…catch…finally

只执行一个catch,一旦执行了完catch,就跳出try…catch结构,如果有写finally,就进入finally

  1. try{
  2. //可能出现异常的代码
  3. }catch(异常类型1 变量名1){
  4. //出现异常类型1的异常的处理方式
  5. }catch(异常类型2 变量名2){
  6. //出现异常类型2的异常的处理方式
  7. }catch(Exception e){//父类异常,捕获所有异常,e是具体的异常
  8. //输出异常
  9. //System.out.println(e);
  10. //e.printStackTrace();
  11. }
  12. //可以写多个catch
  13. finally{
  14. //finally可选可不选
  15. //一定会被执行的代码,
  16. //像数据库连接,输入输出流,网络编程等资源,jvm是不能自动回收的,我们要手动进行回收
  17. //放在finally里面最合适,以防上面的代码异常回收不了
  18. }

2. throws

写法throws 异常类型

  1. public class test1 {
  2. public static void main(String[] args) {
  3. //再抛就抛给jvm了,直接把jvm整挂了,用try catch处理了
  4. try{
  5. xxx();//调用xxx方法,收到一个xxx抛出的异常,这个异常最开始是sss抛给xxx的,xxx不想处理又抛给上面
  6. }catch (Exception e){
  7. e.printStackTrace();
  8. }
  9. }
  10. //throws后面的异常类型多个加逗号隔开,我只写了一个父类的异常
  11. public static void xxx() throws Exception{
  12. String a="asd";
  13. Integer b=Integer.parseInt(a);
  14. }
  15. public static void sss() throws Exception{
  16. xxx();//xxx方法有异常抛出,谁调用就抛给谁。
  17. //xxx抛出异常给sss就不管了,sss接手了异常,要么处理了,要么继续往上抛
  18. }
  19. }