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. Linux/Mac/Shell常用命令

    常用命令 · ls 查看当前目录下的文件 · cd 进入某目录 · cd - 跳转回前一目录 · cd ~ 进入当前用户个人目录 · pwd 输出当前所在路径 · mkdir 新建文件夹 · touc ...

  2. web请求报出 “超过了最大请求长度” 【注意:重启IIS】

    摘自:http://www.cnblogs.com/loalongblogs/archive/2012/10/16/2726372.html web请求报出 “超过了最大请求长度”   错误原因:as ...

  3. 2014年辛星完全解读Javascript第八节 json

    json是JavaScript Object Notation的简写,它是一种轻量级的数据交换格式,而且表达上很容易靠字面去理解.json是用于存储和传输数据的格式,通常用于向服务器端传递数据. ** ...

  4. Hadoop作业调度器

    随着 MapReduce 的流行,其开源实现 Hadoop 也变得越来越受推崇.在 Hadoop 系统中,有一个组件非常重要,那就是调度器.调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计 ...

  5. 调用ZoomEye API获取信息

    最近在提高自己编程能力,拿一些实用的小工具练下.该脚本为python语言,主要涉及模块urllib,json,os模块. 功能:调用ZoomEye API获取信息 import urllib.requ ...

  6. [poj2002]Squares_hash

    Squares poj-2002 题目大意:在笛卡尔坐标系中给出n个点,求这些点可以构成多少个正方形. 注释:$1\le n\le 10^3$,$-2\cdot 10^3\le x , y\le 2\ ...

  7. cocoa编程第4版 8.6 挑战2 解答

    该版本的RaiseMan不用Array Controller,全部手写代码. 要注意的有以下几点: 1.TableView每列的sort设置和AC版的相同,但要手写排序代理方法 2.TableView ...

  8. Andriod App类型简介

    App三种类型与区别 原生应用程序:(Native App) 原生APP是什么?原生APP就是利用Android.iOS平台官方的开发语言.开发类库.工具进行开发.比如安卓的java语言,iOS的ob ...

  9. 第一节:.Net版基于WebSocket的聊天室样例

    一. 说在前面的话 该篇文章为实时通讯系列的第一节,基于WebSocket编写了一个简易版聊天样例,主要作用是为引出后面SignalR系列的用法及其强大方便之处,通过这个样例与后续的SignalR对比 ...

  10. css中的定位属性