java检查型异常和非检查型异常(运行时异常)

博客原文地址:https://www.cnblogs.com/tjudzj/p/7053980.html

这两个概念看了忘,碰着了又看,老是傻傻的分不清楚,今天把心得结合从网上搜的资料简单整理一下,希望帮自己明确区分开这两个概念,并牢牢的记住

1.检查型异常(Checked Exception)

个人理解:所谓检查(Checked)是指编译器要检查这类异常,检查的目的一方面是因为该类异常的发生难以避免,另一方面就是让开发者去解决掉这类异常,所以称为必须处理(try …catch)的异常。如果不处理这类异常,集成开发环境中的编译器一般会给出错误提示。

例如:一个读取文件的方法代码逻辑没有错误,但程序运行时可能会因为文件找不到而抛出FileNotFoundException,如果不处理这些异常,程序将来肯定会出错。所以编译器会提示你要去捕获并处理这种可能发生的异常,不处理就不能通过编译。

常见检查性异常:

SQLException
SQL异常
IOException
IO异常,在对流操作时有可能会出现的异常
FileNotFoundException
找不到某个文件时,会抛出该异常
ClassNotFoundException
找不到某个类时,会抛出该异常
EOFException
输入过程中意外地到达文件尾或流尾,会抛出该异常,常见于对流的操作
  
  在这里插入图片描述
2.非检查型异常(Unchecked Exception/RuntimeException)

个人理解:所谓非检查(Unchecked)是指编译器不会检查这类异常,不检查的则开发者在代码的编辑编译阶段就不是必须处理,这类异常一般可以避免,因此无需处理(try …catch)。如果不处理这类异常,集成开发环境中的编译器也不会给出错误提示。

例如:你的程序逻辑本身有问题,比如数组越界、访问null对象,这种错误你自己是可以避免的。编译器不会强制你检查这种异常。

常见运行时异常:

NullPointerException
空指针异常,JAVA8中可用Optional来避免,一般是代码中出现了空对象时,抛出该异常

IndexOutOfBoundsException
数组下标越界异常,当使用的数组下标超出数组允许范围时,抛出该异常

ClassCastException
类型转换异常,当试图将对象强制转换为不是实例的子类时,抛出该异常

NumberFormatException
数字格式化异常,当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常

JSONException
JSON异常,进行JSON格式化操作时出现异常,会抛出该异常
  在这里插入图片描述

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 检查型异常是指在编写程序时需要显式地声明并处理的异常,包括IOException、SQLException等。这些异常通常是由外部因素引起的,例如文件读写错误、数据库连接错误等,需要程序员在编写代码时进行处理,以保证程序的稳定性和可靠性。 ### 回答2: 下列异常检查型异常,需要在编写程序时声明的有:IOException(输入输出异常)、FileNotFoundException(文件未找到异常)、ClassNotFoundException(类未找到异常)、SQLException(SQL语句异常)、InterruptedException(线程中断异常)等等。这些异常通常是由于外部造成的环境异常或者是编程错误所引起的异常,需要在编写代码时显式地声明和处理,以保证程序的稳定性和可靠性。在处理这些异常时,可以采用 try-catch-finally 的异常处理机制,通过捕获异常并进行相应的处理,保证程序的正常运行。若不进行异常处理或者忽略了这些异常,将可能导致程序崩溃、数据丢失等严重后果。因此,对于这些检查型异常,在编写代码时应该始终意识到其可能产生的风险,并及时进行处理,以确保程序的健壮性。 ### 回答3: 在Java编程中,下列哪种异常属于检查型异常,需要在编写程序时声明。检查型异常是指在程序代码中可能发生的异常情况,必须在程序中进行捕获或声明处理的异常。以下是几种常见的检查型异常: 1. FileNotFoundException(文件未找到异常):当尝试打开一个不存在的文件时抛出的异常。在编写代码时,需要使用try-catch块来捕获该异常,或者在方法签名中使用throws关键字声明可能会抛出该异常。 2. SQLException(数据库异常):当在访问数据库时发生错误,如连接失败或查询错误时,会抛出SQLException异常。在编写与数据库相关的代码时,必须在代码中捕获或声明处理此异常。 3. IOException(输入输出异常):在进行输入/输出操作时可能发生的异常情况,如读取文件、写入文件等。例如,当读取文件时,如果文件已被删除或无法访问,就会抛出IOException异常。编写此类代码时,需要对异常情况进行处理。 4. ClassNotFoundException(类未找到异常):当试图加载某个类但找不到该类时,会抛出ClassNotFoundException异常。当使用Class.forName()方法加载类时,应该在代码中捕获或声明处理此异常。 5. InterruptedException(线程中断异常):当线程在等待状态时被中断时,会抛出InterruptedException异常。在使用多线程编程时,可能需要对此异常进行处理。 需要注意的是,上述异常只是一些常见的检查型异常,实际上还有许多其他类型的检查型异常。在编写程序时,开发人员需要根据具体情况来判断并处理相应的异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值