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. uva 1346 - Songs(贪心)

    题目链接:uva 1346 - Songs 题目大意:John Doe 是一个著名的DJ,现在他有n首播放个曲, 每首歌曲有识别符key,歌曲长度l,以及播放频率q.想在John Doe 想将磁带上的 ...

  2. 如何在settings里的休眠模式里添加永不休眠

    最近项目需求里需要在设置菜单的休眠模式里添加一项永不休眠选择项.针对MTK平台的修改方式有如下几步骤.(其他平台和android原生系统的修改方式类似,只是android原生系统修改永不休眠需要通过设 ...

  3. mac 修改系统配置参数 主机名 等

    mac 修改系统配置参数,可以使用 命令 scutil 参考网址: https://developer.apple.com/library/mac/documentation/Darwin/Refer ...

  4. 查看内存数据的函数(ByteToHex和ByteToBin,最终都变成String)

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  5. JavaScript移除数组元素

    //数组移除长度方法 var array=[]; array[0]="张三"; array[1]="李四"; array[2]="王五"; ...

  6. Java学习JVM搞搞Jconsole呗

    无意间翻到这条博客:http://www.blogjava.net/zhvfeng/archive/2010/08/04/327956.html 这里还有个讲解的:http://www.kafka01 ...

  7. [积累]C++复习 海大2014硕士生面试题微信系统总结

    好久没用C++了,正好同学有个面试题,于是就帮忙看了一下.尽管对C++的知识了解不少, 可是长期被Java浸淫, 发现这个简单的程序却也写着也不是那么顺手.好在最后还是搞定了,以下分析一下,题目例如以 ...

  8. ADS1.2安装

    一.ADS1.2的安装 1. 解压 2. 双击打开ads1.2 3.我们选择当中的SETUP.EXE文件,进行安装 4.点击Next: 5.这是许可文件,假设允许的话选择Yes: 6.选择安装文件夹, ...

  9. Codeforces 39E What Has Dirichlet Got to Do with That? 游戏+内存搜索

    主题链接:点击打开链接 意甲冠军: 特定 a一箱 b球 不变n (球和箱子都不尽相同,样的物品) 设 way = 把b个球放到a个箱子中的方法数, 若way >= n则游戏结束 有2个人玩游戏. ...

  10. Java中取某一个范围的随机数

    一.取模操作 public static void main(String[] args) { for (int i = 1; i <= 20; i++) { int j = i % 11; S ...