异常的分类

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. nodejs http静态服务器

    使用nodejs写的很简单的静态服务器,没有做cluster处理,没有做缓存处理,不支持访问文件夹,功能只有一个,就是获取到文件后再返回文件内容. var fs = require('fs'); va ...

  2. SQL 2008执行语句遇到内存不足(1)——error 701

    原文:SQL 2008执行语句遇到内存不足(1)--error 701 转自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/17/sql-2008-e ...

  3. tomcat配置sqlserver数据库

    1. 首先确保Tomcat安装文件夹中的\common\lib(对于Tomcat5.5)或者是\lib(Tomcat6.0)文件夹中已包括JDBC连接数据库所必须的三个.jar文件(msbase.ja ...

  4. oracle connect by 说明

    Oracle能够通过START WITH . . . CONNECT BY . . .子句来实现SQL分层查询,这递归查询 例如: select level||'月' 月份 from dual con ...

  5. Java它配备了一个很好的工具2

    Jconsole 本机java自带的系统monitor具,它也可以连接到的本地远程连接java process,联系java process申请后可查看CPU,内存,主题.GC事件,能帮忙看看系统是否 ...

  6. Intelli idea 常用快捷键汇总

    To navigate to the implementation(s) of an abstract method, position the caret at its usage or its n ...

  7. remine chart2安装

    http://blog.csdn.net/kufeiyun/article/details/9213911

  8. malloc实现原理

    记得早一段时间,看到一本书上写过delete的一个..今天突然找啦一下资料: malloc()是C语言中动态存储管理 的一组标准库函数之中的一个.其作用是在内存的动态存储区中分配一个长度为size的连 ...

  9. MVC — 第 6 天

    7 天玩转 ASP.NET MVC — 第 6 天   目录 第 1 天 第 2 天 第 3 天 第 4 天 第 5 天 第 6 天 第 7 天 0. 前言 欢迎来到第六天的 MVC 系列学习中.希望 ...

  10. 十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见)

    原文:十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见) 非常开心能够和大家一起分享这些,让我受益匪浅,感激之情也溢于言表,,code monkey的 ...