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. dialog开发

    dialog开发屏幕编程:ok_code在程序里用sy-ucomm接受 调用其他事物代码:call transaction ‘SE38’. 1:50 选择屏幕之屏幕按钮: selection-scre ...

  2. A Very Easy Triangle Counting Game

    题意:在圆上取n个点,相邻两个点之间连线,(注意,n和1相邻),然后所有点对(i ,i+2)相连,问能形成的不同的三角形有多少个? 思路:找规律 n=3,cnt=1; n=4,cnt=8; n=5 c ...

  3. Matlab图像处理系列1———线性变换和直方图均衡

    注:本系列来自于图像处理课程实验,用Matlab实现最主要的图像处理算法 图像点处理是图像处理系列的基础,主要用于让我们熟悉Matlab图像处理的编程环境.灰度线性变换和灰度拉伸是对像素灰度值的变换操 ...

  4. STL内存管理器的分配策略

    STL提供了很多泛型容器,如vector,list和map.程序员在使用这些容器时只需关心何时往容器内塞对象,而不用关心如何管理内存,需要用多少内存,这些STL容器极大地方便了C++程序的编写.例如可 ...

  5. Java实现敏感词过滤(转)

    敏感词.文字过滤是一个网站必不可少的功能,如何设计一个好的.高效的过滤算法是非常有必要的.前段时间我一个朋友(马上毕业,接触编程不久)要我帮他看一个文字过滤的东西,它说检索效率非常慢.我把它程序拿过来 ...

  6. 总结showModalDialog在开发中的一些问题

    一.在页面调用window.open()函数后,可以直接在打开的页面中用window.opener来调用父页面的方法,然而如果用showModalDialog打开一个模态窗口,就不能通过window. ...

  7. Windows系统版本号判定那些事儿

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  8. Android自己定义控件——3D画廊和图像矩阵

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/39932689 1.3D画廊的实现 我们知道android系统已经为我们提供好了一个 ...

  9. 依据不同的操作系统读取配置文件/java读取属性文件代码

    package cn.com.css.common.util; /**  * @brief OSEnum.java 操作系统的枚举  * @attention  * @author 涂作权  * @d ...

  10. Delphi基础Write写入结构体到文件(使用 file of myrecord就行了,真简单)

    program WriteStruct; {$APPTYPE CONSOLE} uses SysUtils; //写入结构体 type TCustomer = record ID: ]; Code: ...