zoukankan      html  css  js  c++  java
  • Java基础知识二次学习--第四章 异常

    第四章 异常处理
     
    时间:2017年4月26日11:16:39~2017年4月26日11:28:58
    章节:04章_01节 04章_02节
    视频长度:20:46+01:16
    内容:异常的概念
    心得:
    Java异常是JAVA提供的用于处理程序中错误的一种机制
    实在运行的过程中发生的一些异常事件(比如除0溢出,数组越界,要读取的文件不存在)
    设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果
     
    JAVA程序的执行过程中 如果出现异常事件,可以生成异常类的对象,该异常对象封装了异常事件的信息并被提交给JAVA运行时的系统,这个过程称为抛出(throw)异常
     
    当JAVA运行时系统受到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一个过程称为捕获(catch)异常。
     

     

     
    时间:2017年4月26日11:29:02~2017年4月26日11:32:52
    章节:04章_03
    视频长度:19:47
    内容:异常的分类
    心得:
    Throwable -->Error , Exception 
    Error -->难以处理的称为error
    Exception-->RuntimeException 与 其他的Exception
    runtimeException 经常出的异常 可以不捕获
    另外的exception 必须要被捕获(一般经常throws的)
    例如IOEXCEPTION 之类的
    图片
     
     
     
    时间:2017年4月26日11:33:03~2017年4月26日14:38:31
    章节:04章_05
    视频长度:S9:29
    内容:finally语句
    心得:
    try{
    //可能出现异常的代码
    }
    后面可以跟着一个或者多个catch
    每个catch代码段声明能处理的一种特定类型的异常并提供处理的方法

     

     
     
    finally 的语句始终会执行
     
    对这句话的情况作了一个简单的测试
     
    分别测试了当堆内存溢出,栈内存溢出与system.exit()语句 还有各种return的情况finally的执行情况
     
    第一种堆溢出

     

     
    先打印异常 再输出finally语句
     
    第二种 栈溢出

     

     
    先输出finally语句 再打印异常
     
    以上两种情况是这样的
    try{
    通过不断的往堆或者栈里面加东西 使得内存溢出
    }finally{
    system.out.println("..........")
    }
     
    然后如果作一个小小的改变
    try{
    通过不断的往堆或者栈里面加东西 使得内存溢出
    }finally{
    再往内存里加一个语句
    system.out.println("..........")
    }
     

     

    也不输出了 
    但是实际上还是进入了finally 只是强行关闭了虚拟机
     
    第三种 System.exit(0)或者-1
    不进入finally语句
     
    第四种 关于return
    try里面有return finally没有的话是这样
    debug跑到return语句之后 先执行return 
    接着 进入finally 
    最后 返回return结果 
    也就是说 
    finally模块语句的位置是在 执行return之后 返回return之前
     
    如果finally里面有return的话是 直接覆盖掉try或者catch里面的return 语句
     
    因此得出结论:
    1不终止JVM的情况下,finally中的代码一定会执行。
    2.finally模块语句的位置是在 执行return之后 返回return之前
     
    如果finally里面有return的话是 直接覆盖掉try或者catch里面的return 语句
     
     
    时间:2017年4月26日14:38:31~2017年4月26日14:50:05
    章节:04章_06
    视频长度:12:57
    内容:声明方法抛出的异常
    心得:
    throws 异常
    抛出异常的方法 调用的话 可以继续抛
    但是到最后一步必须要捕获(不是runtimeException)
     
    当然可以在main方法里抛 但是非常不建议。。
    最终还是要捕获的
    要不然出了错都不知道怎么回事
    能处理的就处理 不能处理往外抛
     

     

     
     
    时间:2017年4月26日14:50:37~2017年4月26日15:07:38
    章节:04章_07
    视频长度:12:01 +1:28
    内容:异常的其他问题
    心得:
    多次catch的时候
    遵循先catch小异常 再catch大异常
    否则编译无法通过(因为已经捕捉到了)
    并列的就没有这种限制
     
    关于自定义异常
    1.通过继承Exception类声明自己的异常类
    2.在方法适当的位置 生成自定义异常的实例,并用throw语句抛出
    3.在方法的声明部分用throws语句声明该方法可能抛出的异常
     
     
    注意: 重写方法需要抛出与所抛出异常类型一致或不抛出异常
     
    总结5个关键字 try catch finally throw throws
  • 相关阅读:
    我的友情链接
    我的友情链接
    BUMO:超级节点共建接口
    OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题
    零知识证明: 抛砖引玉
    比特币原理
    区块链零知识证明:STARKs,Part-3:攻坚(下)
    什么是zkSNARKs:谜一般的“月亮数学”加密,Part-1
    什么是zkSNARKs:谜一般的“月亮数学”加密,Part-2
    STARKs, Part I: 多项式证明
  • 原文地址:https://www.cnblogs.com/invoker-/p/6795108.html
Copyright © 2011-2022 走看看