• 异常


    异常不是编译时的错误。
    编译时的错误叫error.
    异常指Exception
     
    异常的分类
    Throwable
      1.Error
      2.Exception
        1.RuntimeException
     
    1.Error 由java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等, 是系统错误,程序员无法处理这些异常
    2.Exception 一般程序中可预知的问题,其产生的异常可能会带来意想不到的结果,因此java编译器要求java程序必须捕获或声明所有的非运行时异常,是程序员可以捕获并处理的异常
    3.RuntimeException java虚拟机在运行时生成的异常,如被0除等系统错误、数组下标超范围等,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大。因此有系统检测,用户可不做处理,系统将他们交给缺省的异常处理程序( 当然,必要时用户可对其处理)
    4.凡是继承自Exception但又不是RuntimeException子类的异常我们都必须得捕捉并进行处理
     
     
    什么是异常
    异常(Exception)是程序运行过程中发生的事件,该事件可以中断程序指令的正常执行路程。
     
    异常的处理机制(重点)
    1.当JAVA程序运行时出现问题时,系统会自动检测到该错误,并立即生成一个与该错误对应的异常对象
    2.然后把该异常对象提交给java虚拟机
    3.java虚拟机会自动寻找相应的处理代码来处理这个异常,如果没有找到,则由java虚拟机做一些简单的处理后,程序被强行终止!
    4.程序员可以自己编写代码来捕捉可能出现的异常,并编写代码来处理相应的异常
     
    可处理可不处理和必须得进行处理的异常
    如果抛出IOException异常要处理否则编译会出错,ArithmeticException不用处理。
    RuntimeException可处理可不处理。
    如果是Exception的子类不是RuntimeException的子类必须要进行处理。
    ArithmeticException是RuntimeException的子类 所以可处理可不处理。
     
    异常处理的方式
    1.try{}catch{}
    2.public void f() throws IOException
    throw抛出异常
    throws f方法抛出的异常交给OIException进行处理
     
    finally
    {
    无论是否捕捉到异常必须执行的代码;
    }
     
    异常的优缺点
    优点:
    强制程序员考虑程序的安全性与健壮性
    增强了程序员对程序的可控性
    有利于代码的调试
    把错误处理代码从常规代码中分离出来
    注意:
    异常并不一定能够使程序的逻辑更清晰
    因为有时我们必须得编写代码捕捉异常,所以可能会导致程序的逻辑非常混乱
    异常并不能解决所有的问题
     
    注意问题:
      1.所有的catch只能有一个被执行
      2.有可能所有的catch都没有执行
      3.先catch子类异常再catch父类异常
        1.如果先catch父类异常再catch子类异常,则编译时会报错
      4.catch与catch之间是不能有其他代码的
      5.重写方法抛出异常的范围不能大于被重写方法排除的异常范围
  • 相关阅读:
    dynamic 转换实体类
    泛型的简单使用
    winfrom嵌入word
    echart睡眠后台代码,
    echart实现睡眠前台代码
    Mysql时间加一天
    一道关于面向对象面试题所引发的血案(阿里)
    一道面试题让你彻底掌握JS中的EventLoop(头条)
    对象(数组)的深克隆和浅克隆(头条)
    BAT笔试题中几道关于堆栈内存和闭包作用域的题
  • 原文地址:https://www.cnblogs.com/clear93/p/5805837.html
Copyright © 2020-2023  润新知