1. Exception 和 Error

    1. Exception 和 Error 都是继承了 Throwable 类, 在 java 中, 只有继承了 Throwable 类才可以使用 throw 抛出, 或者 cath 捕获;
    2. Exception 意为 java 运行时可能发生的不合理的情况, 出现时并不会时程序异常退出。其中 Exception 又分为可检查异常, 非可检查异常。 可检查异常需要显示的捕获, 或者抛出, 不可检查异常不需要显示的捕获, 或者抛出;
    3. Error 意为 java 运行时发生的错误, 出现时绝大部分会使程序异常退出, 使程序无法使用;
  2. 知识扩展
    1. 尽量不要捕获类似 Exception 这样的通用异常,而是应该捕获特定异常。
    2. 不要将异常信息吞掉。
    3. 不要使用printStackTrace(),此方法会将信息输出到标准出错系统(standard error stream)中,很难判断到底输出到哪了,最好输出到日志系统中。
  3. 问题集:
    1. NoClassDefFoundError 和 ClassNotFoundException 的区别;
      NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中对于错误和异常的处理是不同的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。

      ClassNotFoundException的产生原因主要是:
      Java支持使用反射方式在运行时动态加载类,例如使用Class.forName方法来动态地加载类时,可以将类名作为参数传递给上述方法从而将指定类加载到JVM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出ClassNotFoundException异常。
      解决该问题需要确保所需的类连同它依赖的包存在于类路径中,常见问题在于类名书写错误。
      另外还有一个导致ClassNotFoundException的原因就是:当一个类已经某个类加载器加载到内存中了,此时另一个类加载器又尝试着动态地从同一个包中加载这个类。通过控制动态类加载过程,可以避免上述情况发生。

      NoClassDefFoundError产生的原因在于:
      如果JVM或者ClassLoader实例尝试加载(可以通过正常的方法调用,也可能是使用new来创建新的对象)类的时候却找不到类的定义。要查找的类在编译的时候是存在的,运行的时候却找不到了。这个时候就会导致NoClassDefFoundError.
      造成该问题的原因可能是打包过程漏掉了部分类,或者jar包出现损坏或者篡改。解决这个问题的办法是查找那些在开发期间存在于类路径下但在运行期间却不在类路径下的类。

转载于:https://www.cnblogs.com/xiong233/p/10942914.html

[java基础问题] Exception 和 Error相关推荐

  1. JAVA中的Exception和Error之间的区别

    请对比Exception和Error,另外,运行时异常与异常有什么区别? 典型回答: Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例可以被抛 ...

  2. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  3. JAVA基础--自定义异常exception

    异常图解 捕获异常有三种格式:①try-catch  语句:②try-catch-finally 语句:③try-finally 语句. 如果在try 或者 catch 中存在return 语句,这时 ...

  4. java的标量和聚合量_第5节:Java基础 - 必知必会(下)

    第5节:Java基础 - 必知必会(下) 本小节是Java基础篇章的第三小节,主要讲述Java中的Exception与Error,JIT编译器以及值传递与引用传递的知识点. 一.Java中的Excep ...

  5. 跳槽者、应届生必看JAVA面试题系列 - JAVA基础知识(四)

    一: 前言 莫等闲,白了少年头,空悲切. 二: 面试挑战   在文章开始前,首先安利下"面试挑战": 凡是满足下面的挑战条件的,如果一个月内没有拿到一个Offer的,免费提供简历封 ...

  6. Java基础-异常(Exception)处理

    Java基础-异常(Exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.异常的概述 什么是异常?Java代码在运行时期发生的问题就是异常.在Java中,把异 ...

  7. Java基础知识——异常Throwable和Exception

    Java基础知识--异常Throwable和Exception Java设置了异常,旨在鼓励将方法中可能出现的异常告知给使用此方法的程序员(你和我!).当然了,这种方法是比较优雅的,让我们确切的知道是 ...

  8. 读Java核心技术36讲有感——谈谈对Java的理解,谈谈Exception和Error

    读过杨晓峰老师的36讲之后,想总结下自己的感想,写下来也有助于记忆,方便以后面试查阅和复习.题目所提到的话题本来是两讲,但是由于感想篇幅较短,所以合成一篇来写. 一.谈谈对Java平台的理解: 1.J ...

  9. Java基础学习总结(86)——Java异常处理机制Exception抛出异常时throw和throws用法详解

    什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...

最新文章

  1. java中this关键词
  2. 防止酒后删库!日本人用 3 小时做了个酒精测试软件
  3. Java ClassLoader详解
  4. 数据挖掘:分享两个Pandas使用小陷阱
  5. Linux watch命令详解
  6. JVM学习笔记之-类加载子系统,类的加载与类的加载过程,双亲委派机制
  7. Solr+Hbase多条件查(优劣互补)
  8. CodeForces 258D Little Elephant and Broken Sorting(期望)
  9. 熊猫数据集_熊猫迈向数据科学的第二部分
  10. 哈尔滨理工C语言程序设计精髓_【注意啦】哈尔滨工业大学2020考研计算机专业课调整,难度提升!...
  11. 将C#中DateTime类型转化为JavaScript中的Date类型
  12. 双精度数举例_c语言中,常量,变量,浮点,单精度,双精度是什么意思?举例...
  13. socket网络编程 java_Java Web 基础(一) 基于TCP的Socket网络编程
  14. 计算机合计功能,Javascript自动求和,Javascript自动合计
  15. Spark:windows下配置spark开发环境
  16. 用c语言枚举计算坐标,来个c++枚举有效范围计算器
  17. mysql判断是否为分区表_MySQL 分区表
  18. linux注册浏览器协议,在Linux系统上安装Beaker浏览器的方法
  19. 如何修改PPT中左下方状态栏的主题名称
  20. Android 渲染机制——SurfaceFlinger

热门文章

  1. udp模拟tcp java_Java简单实现UDP和TCP
  2. 机器人 瓷砖墙面清洗_墙壁清洁机器人解析
  3. php高中级程序员面试题,PHP 程序员面试笔试常考面试题精讲
  4. Linux进阶之路——常用命令总结
  5. 排序算法之----快速排序(快速上手快速排序)
  6. html cookie传参,页面间固定参数,通过cookie传值的实现方法
  7. 嵌入式全栈工程师_我花了半个月,整理出了这篇嵌入式开发学习指南(学习路线+知识点梳理)...
  8. 计算机硬件系统教具,计算机硬件系统 (2)
  9. android 事务管理软件,安卓 Android基于安卓移动终端的个人事务管理系统
  10. mysql 数据记录导出_mysql如何导出600万条记录的数据表?