异常的分类

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. Linux网络基础设施配置

    1.TCP/IP网络配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network /etc/host.conf /etc/ ...

  2. Html5响应式设计与实现广场

    由于提出的想法响应式设计,越来越多的网站使用这样的思想.各类大型网站如雨后春笋般涌了出来.例如:小米商城.天猫等. 至于响应式设计的概念等大家能够去百度百度,我这里就不相信解说了.直接为大家带来源代码 ...

  3. ubuntu,从一个新用户,要转到新用户的命令行操作

    shibo-ubuntu@ubuntu:~$ sudo useradd karen [sudo] password for shibo-ubuntu:  shibo-ubuntu@ubuntu:~$ ...

  4. CDH秘籍(两):cloudera Manager存储监控数据

    概述 上一篇文章分析了cloudera manager中监控数据.中心数据的存储方式,如何配置外部表等.这一篇文章进一步分析监控数据的存储,配置,调优等. Service Monitor 和 Host ...

  5. HTML5中类jQuery选择器querySelector的高级使用 document.querySelectorAll.bind(document);

    基本用法 querySelector 该方法返回满足条件的单个元素.按照深度优先和先序遍历的原则使用参数提供的CSS选择器在DOM进行查找,返回第一个满足条件的元素. ----> querySe ...

  6. 小丁带你走进git的世界三-撤销修改(转)

    一.撤销指令 git checkout还原工作区的功能 git reset  还原暂存区的功能 git clean  还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...

  7. Android checkbox和radiobutton 以及Toast和AlertDialog的使用

    package com.example.radiobutton_01; import android.app.Activity; import android.os.Bundle; import an ...

  8. C#+Mapxtreme 实现一些GIS系统基本的功能

    此程序包括了mapxtreme地图相关基本功能的演示其中包括 鹰眼地图,图层控制,发达,缩小,平移地图,地图模糊查询,中点工具,距离测量工具,面积测量工具,图元信息查看工具.适合于企业级开发,可以为您 ...

  9. 使用python+flask让你自己api(教程源代码)

    1.背景 ok,这可能是很多朋友和我一样经常使用的各种api,例facebook的.github的.甚至微信api.因此,很多人都想使自己的api.在线教程在这方面它是非常小的,今天,我做了一个平稳, ...

  10. Duanxx的STM32学习:STM32F103中等容量的功能和外设

    版权声明:本文博客原创文章,博客,未经同意,不得转载.