java异常继承关系


Erro:

  • 程序无法处理的错误,编译器不做检查。
  • 属于JVM需要负担的责任
  • 常见error:NoClassDefFoundError(找不到class定义的异常);OutOfMemoryError(内存溢出异常);StackOverflowError(深递归导致栈被耗尽而抛出的异常)

Exception:

  • 程序可以处理的异常,捕获之后可以恢复。
  • 分为RuntimeException(非检查异常)和checked Exception(检查异常);
  • RuntimeException是程序运行时发生的异常,是程序应该负担的责任。
  • checked Exception是编译时可以发现的异常,是java编译器应该承担的责任。
  • 常见RuntimeException:NullPointeException(空指针异常);ClassCastException(类型强。制转换异常);IllegalArgumentException(传递非法参数异常);IndexOutOfBoundsException(下标越界异常);NumberFormatException(数字格式异常)等。
  • 常见hecked Exception:ClassNotFoundException(找不到指定class的异常);IOException(IO操作异常)

异常影响性能:

  • try-catch语句会影响jvm对代码的优化,所以应该只包含必要的代码段;
  • 每次实例化一次Exception,jvm对线程栈进行一次快照,这是一个比较重的操作,非常耗费资源;

Throw&Throws

Throws:

  • 用在方法后面,把异常向上抛出,在调用该方法处进行try catch。
  • throws可以抛多个异常。
  • 当java代码发生异常时,由jvm抛出异常对象,导致代码中断,这个时候jvm做的操作就是:创建异常对象,然后抛出。
  • throws Exception表示的是本方法不处理异常,交给被调用处处理,而且被调用处必须处理(必须加try catch,不然编译不过)
  • 如果方法后面不加throws Exception,方法出了异常就会向上传递抛出,如果调用者没有处理,继续向上抛出,最终交给虚拟机处理,程序会中断,但是如果在调用处捕获,程序还可以继续进行,只是抛异常的方法受到影响。(如果你不希望异常层层往上抛,你就要用throws Exception) ,
  • 异常处理的原则是尽可能早的catch异常,正常的程序不应该写throws Exception
  • 运行异常(继承RuntimeException)可以不捕获,向上抛,如果一直没有处理,则jvm会自动处理(停止线程,打印异常)。
  • 非运行异常,必须捕获或者在方法声明
void test()throws IOException,SQLException
{...
}

Throw:

  • 只能抛出一个异常。
  • 用来手动抛出异常。
Exception e=new Exception("手动抛出");
throw e;

什么时候try catch异常,什么时候throw异常?

  • 笼统的讲就是需要在本级处理的异常就catch,需要上级处理的异常就向上抛出。
  • 当你的层需要跟外部分开时,你就需要catch.
    比如:service和dao层,在大部分情况下,dao服务于service,但这都属于开发组内部,所以,dao直接throw就可以了。
    但是到了service层,调用service的是另外的开发小组(比如客户端小组),从架构上来说,就需要隐藏代码的内部细节,这个时候就必须要catch掉,然后该写日志写日志,改重新封装错误重新封装。

Erro和Exception区别Throw和Throws的区别相关推荐

  1. Java之throw和throws的区别

    throw和throws的区别 共同点 区别 总结 共同点 两者在抛出异常时,抛出异常的方法并不负责处理,顾名思义,只管抛出,由调用者负责处理. 区别 (1)throws用于方法头,表示的只是异常的申 ...

  2. throw 和 throws 的区别

    我们在运行一段代码,做一个项目的时候遇到BUG.异常是再正常不过的事情.说到异常,异常种类是有很多种的,Throwable就是异常的根类. 常见的异常就有在Throwable下的子类 错误 - Err ...

  3. java throw 和throws的区别

    * throw和throws的区别:*1.位置不同* throw:方法的内部* throws:方法的声明处* 2.内容不同* throw new 异常();* throws+异常类型的对象(可以有多个 ...

  4. java中throw与throws的区别

    java中throw与throws的区别 throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常. throw是具体向外抛异常的动作,所以它是抛出一个异常实例. throw ...

  5. Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别

    Java 创建用户异常类.将异常一直向上抛. throw和throws的区别 参考文章: (1)Java 创建用户异常类.将异常一直向上抛. throw和throws的区别 (2)https://ww ...

  6. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  7. throws java_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  8. throw和throws的区别(java)

    目录 1.什么是声明异常(throws)? 1.1.声明格式 1.2.代码演示 2.什么是throw? 2.1.声明格式 2.2.代码演示 3.throw和throws的区别? 1.什么是声明异常(t ...

  9. throw和throws的区别

    throw和throws的区别: throw代表动作,表示抛出一个异常的动作:throws代表一种状态,代表方法可能有异常抛出:throw用在方法实现中,而throws用在方法声明中:throw只能用 ...

最新文章

  1. 下推自动机详讲 包含Java实现 Pushdown Automata (PDA)
  2. 刚发版就被客户购买,升级后的神策用户画像究竟有什么魔力?
  3. MyEclipse6.0 安装axis2插件, 调用加密的SAP webservice
  4. wps 复制流程图_简单三步,用WPS轻松完成一个又大气又好看的流程图!
  5. 指针一维数组名的含义
  6. [唐胡璐]VBS技巧 - Adding Quotes(为字符串加双引号)
  7. 【SAP解决方案干货合集】满满的干货,是您了解华为云SAP解决方案的必备利器
  8. 【NLP入门】通俗讲解Subword Models
  9. python2 输出\n 不要换行
  10. Oracle 列类型说明
  11. nanomsg项目实战
  12. Matlab画曲线的切向量-quiver函数的应用
  13. permissionerror winerror 5 拒绝访问。
  14. Android项目迁移到Androidx经验总结
  15. android 识别中文字体,在 Android 上高效准确的进行 OCR 识别,白描帮你实现
  16. 互联网真的寒冬了么?——1024,祝程序员节日快乐。
  17. FAST2022 DEPART: Replica Decoupling for Distributed Key-Value Storage Qiang(翻译分析)
  18. 仿生学导论学习笔记——第一章
  19. keil5 报错no target connected
  20. Andorid实例--仿外卖APP(未完成)

热门文章

  1. 2020年计算机科学与技术学校排名,2020年全国计算机科学与技术专业大学排名
  2. 四川大学计算机学院人工智能专业排名,人工智能专业大学排名
  3. Createjs 学习笔记
  4. Windows Server 2016 远程桌面会话主机授权设置
  5. 水岸秀墅|千年石湖独一墅
  6. python正则检验_Python 检测生僻字
  7. 华为又一重磅APP永久下线。网友:太难了……
  8. linux qt 获取u盘名称,QT windows平台下获取U盘 QComboBox显示U盘盘符
  9. 计算机核心期刊投稿指南
  10. java将汉字转成拼音首字母大写字母_Java 将汉字转换为拼音并取首字母大写