jvm调用默认的异常处理机制printStackTrace办法

     欲了解更多异常处理。问题

     捕获异常代码块出现继承关系 应该把被继承的异常放在子类异常块的后面

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTIxODE1OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">



throw 和 throws的差别

throw是是用在函数上,而throws是使用在函数内

throw后面跟的是异常对象,而throws跟的是异常类能够 多个

对异常的分类:

1.编译时被检測到的异常。

  (值得去处理的异常,或者是希望得到调用者处理,并不影响运算意向)

2.编译时不被检測到的异常(执行时异常RuntimeException以及他的子类)

  (不值得去处理的。交给jvm去处理。出现这样的异常假如处理的会影藏异常影响了

  运算意向,eg :角标越界、内存溢出、除0运算、空指针)

 class Demo{
     public void method(){
          try{
             throw new Exception();//此时的异常并没有处理,所以要进行抛出或catch否则编译出错
          }finally{
             //由于finally不是处理异常的而是无论异常怎么样都要运行的代码
          }
     }
  }
1. 在继承时。子类不能抛出比父类中很多其它的异常(不包含父类异常和父类异常的子异常)
2. 假设父类方法抛出多个异常。那么子类仅仅能抛出父类异常的子集。
3. 假设父类或接口的方法中没有异常,那么子类覆盖方法时,也不能抛仅仅能自行处理。
class  Demo

{

     public static void main(String[] args)

     {

          try{

               Fu f = new Zi();

               f.method1();

          }catch(AException e){

               /*

               仅仅能处理已知的异常。对于未知的异常不能处理,

               由于在代码编写时,仅仅会处理父类的异常

               对于未知的子类中存在的异常在早先写好的异常处理的代码是不包含处理子类的异常。    

               */

          }

     }

}

class Fu{

     public void method1() throws AException{

          throw new AException();

     }

}

class Zi{

     public void method1() throws CException,BException{

          throw new BException();

     }

}

Exception

    AException

        CException

    BException

总结:
     异常:
           是什么?是对问题的描写叙述。将问题进行对象的封装。
     异常体系结构:
          Throwable
               |--Error
               |--Exception
                    |--RuntimeException
     异常体系的特点:异常体系中的全部类以及建立的对象都具有可抛性。
                  也就是说能够被throw 和 throwskeyword所操作。

仅仅有异常体系具备这个特点。

     throw 和 throws的差别:
          throws是定义在函数上。用于抛出异常类,可一次性抛出多个异常。

          throw是定义在函数内,用于抛出异常对象。

          当函数内容有throw抛出异常对象,并未进行try处理。必需要在函数上声明,否则会编译失败
          注意:RuntimeException除外。也就是说。函数内假设抛出了RuntimeEception异常,
          能够不用声明。
          假设函数声明了异常。调用者须要进行处理。处理方法:try 或者 throws
     异常有两种:
          编译时被检測的异常
               该编译时。假设没有处理。编译会失败,该异常被标识,代表这能够被处理
          执行时异常
               编译时,不须要处理。编译不会进行检查
               该异常的发生。建议不处理,让程序停止。对代码进行修正
     注意:
          finally中定义的关闭资源的代码,由于资源必须释放。
          可是System.exit(0);finally中的代码不会被运行。

     自己定义异常:
          定义继承exception或者runtimeexception
               1.为了让该自己定义类具备可抛性。
               2.让该类具备操作异常的共性方法。
          当要定义自己定义异常的信息时。能够适应父类已经定义好的功能。
          异常信息传递给父类的构造方法。
          
          依照java的面向对象的思想,将程序中出现的特有问题进行封装 。

     异常的优点:
          1. 将问题进行了封装
          2. 将正常流程代码和问题处理代码分离。方便阅读。
     异常的处理原则:
          1. 处理方式有两种: try 和 catch
          2. 调用到排除异常的功能时。抛出多少个异常,就去处理几个
          3. 多个catch,父类的catch被放到继承该异常的以下。

          4. catch内。须要定义针对性的处理方式。不要简单的定义printStackTrace
          5.当捕获的异常,本功能处理不了时,能够继续在catch中抛出。

          6. 假设该异常处理不了,但并不属于该功能的相关异常。
                能够将异常转化后,再抛出和该功能相关的异常。
          7. 或者异常能够处理,当须要将异常产生的和本功能相关的问题提供出去。
               当调用者知道,并处理。也能够将捕获的异常处理后,转换为新异常。抛出
               eg: 汇款的样例    先处理,再告知调用者(通过异常传递信息)
     异常的注意事项:
          1.在子父类覆盖时:
               1. 子类抛出的异常必须是父类异常的子类或者子集。
               2. 假设父类或者接口没有异常抛出时,子类覆盖出现异常必须自行处理(try)
               


编译 javac -d 编译路径(后存放的位置) 文件.java    
运行 java 包名.文件

jar.exe  打jar包

 jar -cvfm classse.jar(归档文件名称) 文件1 文件2 ..

版权声明:本文博主原创文章。博客,未经同意不得转载。

异常学习笔记+打包+doc该软件包编译的更多相关文章

  1. Linux学习笔记(11)软件包管理

    Linux中的软件包分为源码包(脚本安装包)及二进制包(RPM包.系统默认包).其中源码包的优点是: 1)源码包是开源的,如果有足够的能力,可以修改源代码: 2)可自由选择所需的功能: 3)源码包需编 ...

  2. webpack学习笔记——打包js

    1.新建一个入口js文件,如entry.js,代码如下: document.write("It works.") 2.然后编译 entry.js 并打包到 bundle.js(会自 ...

  3. 【小梅哥SOPC学习笔记】设置Eclipse在编译(build)前自动保存源代码文件

    设置Eclipse在编译(build)前自动保存源代码文件 Eclipse 常用设置之让Eclipse在编译(build)前自动保存源代码文件 一.让Eclipse在编译(build)前自动保存源代码 ...

  4. sass学习笔记 -- sass的四种编译方法

    sass的四种编译方法:(.scss) (一)ruby下的命令行编译 首先需要安装ruby,注意需勾选Add Ruby executables to your PATH选项,以添加环境变量. ruby ...

  5. oracle学习笔记(七) 预编译Statement介绍与使用

    预编译Statement优点 执行效率高 由于预编译语句使用占位符 "?",在执行SQL之前语句会被先发送到Oracle服务器进行语法检查和编译等工作,并将SQL语句加入到Orac ...

  6. webpack学习笔记——打包后直接访问页面,图片路径错误

    我说的这种图片路径错误是这样的,运行webpack-dev-server,一切正常,没有错误.当webpack之后,直接打开index页面,报错,图片找不到,找不到的原因是路径错误. 先看我的项目代码 ...

  7. linux学习笔记 yum 在线管理软件包

    -y  如果yum在工作过程中需要使用者响应.这个参数可以直接回答yes #yum list 列出资源库中所有可安装或者可更新的rpm包 #yum perl 列出为perl的包 #yum perl* ...

  8. Python错误和异常 学习笔记

    错误和异常概念 错误:     1.语法错误:代码不符合解释器或者编译器语法     2.逻辑错误:不完整或者不合法输入或者计算出现问题 异常:执行过程中出现万体导致程序无法执行     1.程序遇到 ...

  9. Object C学习笔记5-ARC forbids explicit message* 编译错误

    在学习Object C的过程中XCode 编译器经常出现 "ARC forbids explicit message send of release" 的错误提示. 以上问题主要出 ...

随机推荐

  1. S3C6410 纯粹的裸机启动,自己写的SD BOOT启动

    这几天晚上一直折腾S3C6410的裸机SD卡启动,不大想使用UBOOT,我是搞硬件的,对底层非常感兴趣,不喜欢已经写好的,因此自己一直在尝试,其实很早之前就试过SD卡启动,也就是ARM11上电后会把S ...

  2. 深入理解Arrays.sort() (转)

    Arrays.sort(T[], Comparator < ? super T > c) 方法用于对象数组按用户自定义规则排序.官方Java文档只是简要描述此方法的作用,并未进行详细的介绍 ...

  3. const限定符的作用

    const限定符的作用:                                     1.定义const常量:const可以将一个对象变成一个常量,不可被修改,所以定义的 时候必须进行初始 ...

  4. 单片机C语言实现的采用DS18B20的温度检测装置

    这几天老师布置了一个课程设计题目:采用51单片机控制的DS18B20温度检测系统.大概花了我一个礼拜的时间,幸好我的C语言学得还可以,最后还是让我搞出来了,真是高兴,我是采用STC-52单片机和DS1 ...

  5. 使用ThinkPHP+Uploadify实现图片上传功能

    首先,将下载的Uploadify压缩包解压放到公共文件夹内.实现代码如下: 前台html部分: <script src="/uploadify/jquery.min.js" ...

  6. 《c陷阱与缺陷》笔记--注意边界值

    如果要自己实现一个获取绝对值的函数,应该都没有问题,我这边也自己写了一个: void myabs(int i){ if(i>=0){ printf("%d\n",i); }e ...

  7. LCS小结(O(∩_∩)O~吽吽)

    LCS!~如果你在百度上搜这个的话会出来”英雄联盟冠军联赛”,orz..但是今天要讲的LCS是最长公共子序列 ,"Longest Common Subsequence "not&q ...

  8. python glob 用通配符查找指定目录中的文件 - 开源中国社区

    python glob 用通配符查找指定目录中的文件 - 开源中国社区 python glob 用通配符查找指定目录中的文件

  9. Java时间比較

    Date类有两个方法 一个是after()比方date1.after(date2)推断date1是否在date2之后也就是说date1小于date2吧, 一个是before()比方date1.befo ...

  10. C#关于ref与out的总结

    原文:C#关于ref与out的总结 首先大概说下函数调用的过程,首先为被调用函数分配存储空间(分为代码区和变量区)之后将调用函数传递过来的变量压栈,然后逐一弹栈进行处理,之后进行运算,将需要返回的变量 ...