异常的分类

1、 编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系。

        此类异常在处理时必须进行声明或进行捕捉
        这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式。
        这样的问题,都可以针对性的处理。

2、编译时不检测异常(运行时异常):就是Exception中的RuntimeException体系和其子类。
          此类异常可以在代码中不进行处理
           这种问题的发生,无法让功能继续,运算无法进行,更多是因为调用者的原因导致的或者引发的内部状态的改变导致的。那么这种问题一般不处理,直接编译通过,在运行时让调用时的程序强制停止,让调用者对代码进行修正。
所以,自定义异常的时候,要么继承Exception ,要么继承RuntimeException
 
throws  和 throw 的区别
1、throws 使用在函数上。
      throw 使用在函数内。
2、throws抛出的是异常类,可以抛出多个,用逗号隔开。
     throw抛出的是异常对象,只能抛出一个。
 
异常处理的捕捉形式
这是可以对异常进行针对性处理的方式。
具体格式是:
try{
     需要被检测异常的代码
}
catch(异常类 变量) {    该变量用于接收发生的异常对象
        真正处理该异常的代码
}
finally{   //通常用于关闭、释放资源。
      一定会被执行的代码
}
只有当使用System.exit(0)来进行显示调用退出jvm函数的时候,finally代码才不会被执行
 
当程序能够进行处理的时候就使用try   catch
当程序处理不了的时候就使用throw ,抛给调用者
 
常用方法:
getMessage()
对象本身e,即e.toString() 默认调用此方法
printStackTrace()   这个方法为jvm的默认异常处理机制
 
 
当一个try对应多个catch的时候,对应异常的子类放在上边,父类放在下边。
 
 
异常处理的原则
1,函数内部如果抛出需要检测的异常,那么函数上必须要生命。
     否则必须在函数内用try catch捕捉,否则编译失败。
2,如果调用到了声明异常的函数,要么try catch 要么throws,否则编译失败。
3,什么时候try catch,什么时候throws
        功能内部可以解决的用catch
        解决不了,用throws告诉调用者,由调用者解决。
4,一个功能如果抛出了多个异常,那么调用时,必须有对应的多个catch进行针对性的处理。
        内部有几个需要检测的异常,就抛几个异常。抛出几个就catch几个,不要多也不要少。
 
try catch finally 代码块组合特点:
1,try catch finally  
        完整组合
2,try catch(多个), 当没有必要资源需要释放时,可以不用定义finally
 
3,try finally  没有catch,此时对异常的处理应为throws ,声明抛出。
        异常无法直接catch处理,但是资源需要关闭。
    
异常的注意事项:
1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类。
例:
class A extends Exception
{}
class B extends A
{}
class C extends Exception
{}
 
class Fu
{
    void show() throws A {}
}
class Zi extends Fu
{
void show() 可以throws A  或者throws B  也可以不抛,try 上,但是不能抛出C
}
 
2,如果父类异常抛出多个异常,那么子类只能抛出父类异常的子集
        子类覆盖父类,只能抛出父类的异常或者子类或者子集
    注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛出异常,只能try
例:
interfate Inter{
 void function();
}
class D implements Inter 
{
     public void function();//throws Exception 这里是不可以抛出异常的
{}
}
 
 
 
 
 
 
 

java之JAVA异常的更多相关文章

  1. Core Java 总结(异常类问题)

    所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 下面的代码输出结果是多少?为什么?并由 ...

  2. 【Java心得总结二】浅谈Java中的异常

    作为一个面向对象编程的程序员对于 下面的一句一定非常熟悉: try { // 代码块 } catch(Exception e) { // 异常处理 } finally { // 清理工作 } 就是面向 ...

  3. Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换

    Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换 { "@type":"java.lang.Runti ...

  4. 关于java中的异常问题 1

    1.首先参考一下关于java异常处理方面的知识 查看博客http://lavasoft.blog.51cto.com/62575/18920/ 这里介绍的很好,下面从中学习到一些东西,摘抄如下: 1. ...

  5. Java中的异常-Throwable-Error-Exception-RuntimeExcetpion-throw-throws-try catch

    今天在做一个将String转换为Integer的功能时,发现Integer.parseInte()会抛出异常NumberFormatException. 函数Integer.parseInt(Stri ...

  6. Java throw:异常的抛出怎么回事

    到目前为止,你只是获取了被Java运行时系统抛出的异常.然而,程序可以用throw语句抛出明确的异常.Throw语句的通常形式如下:    throw ThrowableInstance;这里,Thr ...

  7. [改善Java代码] 提倡异常的封装

    JavaAPI提供的异常都是比较低级别的,低级别是指只有开发人员才能看懂的异常.而对于终端用户来说基本上就是天书,与业务无关,是纯计算机语言的描述. 异常封装的三方面的好处: 1)提高系统的友好性   ...

  8. java学习一目了然——异常必知

    java学习一目了然--异常必知 我们只要学java,异常肯定非常熟悉,该抛的时候抛一下就行.但是这其中还有点小细节需要注意.就用这个小短篇来说一下异常处理中的小细节吧. 异常处理 RuntimeEx ...

  9. Java基础笔记-异常

    Java中的异常机制: Throwable类是 Java 语言中所有错误或异常的超类.主要包括两个子类: Error和Exception. 一般中要处理的异常是Exception. Java中最常见的 ...

  10. getActionBar().setTitle(); Java.lang.NullPoint异常解决方案

    getActionBar().setTitle(); Java.lang.NullPoint异常解决方案,是由于低版本不支持直接获取的缘故,修改方案: try changing your theme ...

随机推荐

  1. 自己写CPU第五级(4)——逻辑、实现移动和空指令

    我们会继续上传新书<自己写CPU>(未公布).今天是18片,我每星期试试4 5.5 改动OpenMIPS以实现逻辑.移位操作与空指令 为了实现逻辑.移位操作与空指令(当中nop.ssnop ...

  2. 深入了解C++中间mutablekeyword

         深入理解C++中的mutablekeyword kezunhai@gmail.com http://blog.csdn.net/kezunhai keywordmutable是C++中一个不 ...

  3. HDU 1195 Open the Lock (双宽搜索)

    意甲冠军:给你一个初始4数字和目标4数字,当被问及最初的目标转换为数字后,. 变换规则:每一个数字能够加1(9+1=1)或减1(1-1=9),或交换相邻的数字(最左和最右不是相邻的). 双向广搜:分别 ...

  4. mvc与My97DatePicker插件的结合

    Razor视图引擎与My97DatePicker插件的结合 1 using System; 2 using System.Collections.Generic; 3 using System.Run ...

  5. 他们控制的定义(2.3):SurfaceView和SurfaceHolder

    这个例子需求和流程: Activity加载它们的定义SurfaceView-> SurfaceView 构造函数:初始化刷.传感器.SurfaceHolder和注册SurfaceHolder的监 ...

  6. 采用max_dump_file_size 参数限制trc文件大小

    max_dump_file_size 参数:这个参数可以限制相应的过程trc文件大小(进程是否是oracle后台和前台应用程序对应的server process) 使用案例: 若是一个trc文件已经4 ...

  7. UIMenuController,UIPasteboard:复制,粘贴详细解释

    首先,这四个地图.我想实现的功能.[一张照片讲一个复制到另一UIimageView上] 实现代码例如以下: -(IBAction)panGestureTop:(UILongPressGestureRe ...

  8. 脸识别API微软牛津项目

    微软牛津项目人脸识别API初探 按照董子的这篇博客中的介绍,到微软牛津项目的网站申请到测试用的人脸识别Key,按照官方文档的介绍,把wpf项目建好之后,按照一步步的流程下来就可以完成example中的 ...

  9. Linux命令行下载文件百度云盘

    本来想直接使用wget去下载.但百度似乎增加限制,下半停产,不就不再下.刚刚好找其他方法.另辟蹊径: http://oott123.github.io/bpcs_uploader/ 版权声明:本文博客 ...

  10. SpringData JPA的学习笔记之环境搭建

    一.环境搭建 1.加入jar包   spring jar+jpa jar +springData jar >>SpringData jar包     2.配置applicationCont ...