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. Tomcat详细用法学习(五)

    本篇接上一篇<Tomcat详细用法学习(四)>,主要讲解Tomcat服务器的管理平台 我们可能会将很多web应用交给Tomcat,那么Tomcat服务器就要对我们这些载入的web应用进行管 ...

  2. OpenLayers学习笔记5——使用jQuery UI实现查询并标注(UI篇)

    近期事情非常多,老板给的压力也非常大.经常出差,另外项目和个人研究还都要跟上,本月要交论文,还要写专利,仅仅能抽时间来学习其它的东西了. 关于OpenLayers的在博客中不会写太多详细的实现(网上有 ...

  3. QT源码分析(从QApplication开始)

    QT源码分析 转载自:http://no001.blog.51cto.com/1142339/282130 今天,在给同学讲东西的时候,谈到了Qt源代码的问题,才发现自己对Qt机制的了解是在太少了,而 ...

  4. ELK日志系统:Elasticsearch + Logstash + Kibana 搭建教程(转)

    环境:OS X 10.10.5 + JDK 1.8 步骤: 一.下载ELK的三大组件 Elasticsearch下载地址: https://www.elastic.co/downloads/elast ...

  5. 9月mob(ShareSDK)活动预告,这个秋天非常热

    9月秋天来临,广州的天气依旧非常热,广州的活动氛围更热~ 先有GMGC B2B对接会在广州创新谷,再有上方网TFC全球移动游戏开发人员大会来袭,游戏圈的火越烧越旺,成都GMGDC全球移动游戏开发人员大 ...

  6. C#日期函数使用大全

    1 DateTime dt = DateTime.Now; 2 3 dt.ToString();//2005-11-5 13:21:25 4 5 dt.ToFileTime().ToString(); ...

  7. Github Atom

    码代码新神器-Github Atom   周末闲着没事,逛论坛发现了一个新的编辑器,由github发布的Atom编辑器.瞬间被吸引了,所以就去尝试着折腾了一下,后来发现这个编辑器确实很不错,他的特点就 ...

  8. 新的方法 (New Approach)¶

    第一章:简介 - ANSI Common Lisp 中文版 新的方法 (New Approach)¶ 本书的目标之一是不仅是教授 Lisp 语言,而是教授一种新的编程方法,这种方法因为有了 Lisp ...

  9. ME21N增强提示警告消息

    在ME21N增强中,可以使用message的方法提示错误的消息,但警告消息使用message则提示不了,需要使用系统宏mmpur_message 提示. data:begin of lw_equp, ...

  10. Codeforces Round #309 (Div. 2) C

    题意: 就是给出总共同拥有k种颜色.每种颜色有ki种,排列必须满足第i+1种的最后一种颜色必须在第i种最后一种颜色的后面,其它颜色任意.总共同拥有多少种排列点的方法. 分析: 如果d[i]表示前i种的 ...