异常的分类

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. Android开发之合并文件的几种方式

    以下介绍合并文件的几种方式,并通过合并amr文件来举例介绍合并文件的详细流程.amr格式的文件头是6字节,所以在进行文件合并的时候要减去除第一个文件以外的其它文件的文件头. 注意:不同文件的文件头是不 ...

  2. C++生产和使用的临时对象

     所谓暂时对象就是一种无名对象. 它的出现假设不在程序猿的预期之下(比如不论什么pass by value操作都会引发copy操作,于是形成一个暂时对象),往往照成效率上的负担. 但有时候能够制造 ...

  3. 移动端 Retina屏 各大主流网站1px的解决方案

    Retina屏的移动设备如何实现真正1px的线? 在retina屏下面,如果你写了这样的meta <meta name="viewport" content="in ...

  4. 谈话ZooKeeper(一个)分析ZooKeeper的Quorums机制--预防Split-Brain问题

    使用ZooKeeper学生们应该看到一个参数.它是ZooKeeper超过一半的群集必须节点(Majority)可用的.外来人才在整个集群中可用.在大多数情况下,这种说法是正确的. 谈论这篇文章背后的原 ...

  5. VS2008让自己掌控的定义编译项目后,自己主动添加到工具箱

    在VS2008中,假设在项目里写了一个用户控件.编译后这个控件是不会自己主动出现到工具箱的.按例如以下设置就能够解决问题 工具=>选项=>Windows窗口设计器=>常规=>A ...

  6. JavaEE(7) - JMS消息事务和异常

    1. 使用事务性Session为消息增加事务(NetBeans创建java project: TxSession) MessageSender.java package lee; import jav ...

  7. 每天一个JavaScript实例-canvas绘图

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. How to recover from 'programmers burnout(转)

    程序员这个压力大,节奏快,任务繁重,所以很容易令人感觉倦怠,令人感觉烦躁,郁闷,疲惫不堪. 本文将介绍的是程序员如何克服可怕的“职业倦怠”. 丰盛的早餐——身处高科技产业漩涡的我们常常会熬夜到凌晨两三 ...

  9. java Map 之 排序(key,value)

    一:起因: (1)现实中须要Map容器进行排序的情况非常多非常多:由于Map<key,value>键值对的存储结构特别是HashMap的结构是非常优秀的,数据存储就难免对其进行排序: (2 ...

  10. Swift——(三)Swift神奇的下划线

    在Swift在.有许多神奇的下划线,在这里,我们将看到神奇的汇总,我希望能够帮助其他很多学习Swift朋友. @Author: twlkyao转载或者引用请保留此行. 1.格式化数字字面量     通 ...