JAVA基础:五、异常

异常
1、复习
2、新内容
 
  异常
 一、什么是异常
    1、异常的概念:程序中出现的错误
    2、生活中的异常:什么是异常,正常的反义词。
  赵日天开车去上班,正常情况从家到公司大概30分钟。
  异常情况下:堵车、车祸、车子抛锚、没油、碰瓷(很有可能发生,要考虑应对的情况)
  异常是不可避免的,所以我们预先有应对的方法。
  异常发生的时候我们能做什么?不可能一动不动不处理,崩溃在那里?不管怎么样,生活要继续。
  堵车---绕路、下车跑去机场。
  车祸---报保险、报警
  车子抛锚---24小时救援、拖车
  没油---搞个瓶子加油去
  碰瓷---报警
  try{
       早上起来开车去公司
  }catch(堵车异常 d){
        d.堵车的具体信息    //输出堵车具体信息,看要怎么处理
        System.out.println("绕路吧");
  }catch(车祸 h){
        h.车祸的具体信息    //输出堵车具体信息,看要怎么处理
        System.out.println("报110、120急救");
  }
 二、异常的分类:异常用try...catch...捕获处理
    1、系统错误。(海啸、地震、塘沽大爆炸,O了,啥也不想了,命都没了,你还去啥公司)
  (Error) 虚拟机内存溢出,系统崩溃。不能捕获处理。(无法用try...catch...捕获处理)
    2、语法错误:(早上起来你疯了、你炸了,还去啥公司,人都不正常,程序都不能运行)
  编译时错误(不是异常):语法错误,不能通过编译
  (MyEclipse直接以红线的形式提示)(无法用try...catch...捕获处理)
    3、程序运行异常:语法没有错误,而运行时违反了java程序的规范而导致程序终止

    ×××异常,通常意义上指的都是 程序运行异常×××
     程序运行异常又可分为:  
  *系统异常:违反了Java已经定义好的一些规范,如输入不匹配异常,除数为0,数组越界等
  
  java.util.InputMismatchException  :输入不匹配异常
  Exception in thread "main" java.lang.ArithmeticException: / by zero 算术异常
  
  *自定义异常:违反了程序员自己定义的一些规范,如年龄只能在0-100,输入项只能是1-3等。
 三、异常出现的状态(程序运行异常):
  程序终止(没运行完就崩溃了),并在控制台显示错误的详细描述信息(车祸,)
  System.out.println(1);
  int a = 1/0;
  System.out.println(2);
 四、处理异常的目的:当出现异常时能继续运行程序而不终止,并且控制台显示的方式换成自定义的形式
 五、异常处理的一般模式:try  catch Exception finally
  try :用来监视有可能出现异常的代码块。当出现异常时将异常抛出到catch(可能出现异常的代码)
  catch:当出现异常时,负责处理异常的代码块,try中一旦有异常会自动跳转到这里(异常处理)
  finally:无论是否有异常,都会执行的代码(清理资源的代码)
  Exception类:异常也是对象,都属于Exception类,抛出到catch块中的就是个异常对象。
   使用异常对象来获得异常信息。
 6.多重try catch语句
  a.运行时异常的常见种类:
  数组下标越界 :java.lang.ArrayIndexOutOfBoundsException
  除数为0  :java.lang.ArithmeticException
  空指针异常:java.lang.NullPointExcpeiton
  输入格式错误:java.util.InputMismatchException
  连不上网络:
  打不开文件:
  ......
  b.异常的继承体系:
  见图片文件。
  系统异常又可分为运行时异常与资源访问异常(文件操作,数据库读取等)
  c.多重catch语句:
  当一段代码中可能出现多种类型异常时,可以接上多个catch块分别处理不同类型的异常。系统会自动选择最适合的catch块来处理异常。
  可以处理多种异常,但每次只会处理一个。
  一般在最后加上处理Exception类型的异常表示其他未知错误。
  d.try  catch 可以嵌套使用
 总结:1、程序员对Error无能为力,只能处理Exception。
          2、对异常的处理关系的程序的健壮性。
          3、使用try...catch...finally来处理可能出现异常的代码。
 

 六、自定义异常的处理
  a.自定义异常类,继承与Exception,在构造函数中使用super(String)向父类传递一个表示异常信息的字符串。
  b.抛出自定义异常对象的方式:throw new XXXException().
  c.处理自定义异常的方式:catch  等同与处理系统异常。
 
 1、throw关键字:年龄、身高负数等Java虚拟机判断不了的异常,自己定义一个异常对象,然后用throw抛出
 七、throw和throws关键字
  
   2、throws关键字
  a.作用:在Java中允许在一个函数内,如果有异常函数内部不处理而使用throws关键字表示该函数会抛出的异常类型。这些异常将交给调用该函数的其他函数负责处理
  b.其他函数调用时则必须处理 或者可以使用throws继续向上层调用者抛出。
  c.所有继承于RunTimeException的异常不可用throws抛出,在函数内部必须处理。
   
  

     异常又分为:
  uncheck Exception: RuntimeException
  check Exception:      极有可能出错必须检查捕捉  
  选择:1、可以在方法中用try...catch...捕捉处理
           2、在方法后用throws声明抛出异常,由调用该方法的其他方法负责处理
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值