Java的异常类型总结

所属分类: 软件编程 / java 阅读数: 42
收藏 0 赞 0 分享

Java的设计目的是让程序员有机会设计一个没有错误的应用程序。当应用程序与资源或用户交互时,程序员可能会知道一些异常,这些异常是可以处理的。不幸的是,也有程序员无法控制或简单忽略的例外情况。简而言之,并不是所有的异常都是相同的,因此程序员需要考虑几种类型。

异常是导致程序无法在其预期的执行中运行的事件。异常有三种类型——检查异常、错误和运行时异常。

The Checked Exception(检查异常)

已检查异常是Java应用程序应该能够处理的异常。例如,如果应用程序从文件中读取数据,它应该能够处理FileNotFoundException。毕竟,无法保证预期的文件会出现在它应该出现的位置。文件系统上可能发生任何事情,应用程序对此一无所知。

让我们进一步看看这个例子。假设我们使用FileReader类来读取字符文件。如果你看一看Java api中的FileReader构造函数定义,你会发现它的方法签名:

public FileReader(String fileName)
throws FileNotFoundException

如您所见,构造函数明确声明FileReader构造函数可以抛出FileNotFoundException。这是有意义的,因为文件名字符串很可能会不时出错。请看下面的代码:

public static void main(String[] args){
FileReader fileInput = null;
//打开输入文件
fileInput = new FileReader("Untitled.txt");
}

从语法上来说,这些语句是正确的,但是这些代码永远不会编译。编译器知道FileReader构造函数可以抛出FileNotFoundException,而处理此异常则取决于调用代码。有两个选择-首先,我们可以通过指定一个throw子句来传递异常:

public static void main(String[] args) throws FileNotFoundException{
FileReader fileInput = null;
//打开输入文件
fileInput = new FileReader("Untitled.txt");
}

或者我们可以处理例外情况:

public static void main(String[] args){
FileReader fileInput = null;
try
{
//打开输入文件
fileInput = new FileReader("Untitled.txt");
}
catch(FileNotFoundException ex)
{
//告诉用户去找文件
}
}

编写良好的Java应用程序应该能够处理检查过的异常。

Errors(错误)

第二种异常称为错误。当异常发生时,JVM将创建一个异常对象。这些对象都派生自可抛出类。可抛出类有两个主要子类——错误和异常。Error类表示应用程序不太可能处理的异常。

这些例外被认为是罕见的。例如,JVM可能会因为硬件无法处理它必须处理的所有进程而耗尽资源。应用程序可以捕获错误并通知用户,但通常应用程序必须关闭,直到底层问题得到处理。

Runtime Exceptions(运行时异常)

发生运行时异常仅仅是因为程序员犯了错误。你已经写好了代码,编译器会觉得一切都很好当你运行代码时,它会崩溃,因为它试图访问一个不存在的数组元素或者一个逻辑错误导致一个方法被调用为空值。或者程序员可能犯的任何数量的错误。但是没关系,我们通过详尽的测试来发现这些异常,对吧?

错误和运行时异常属于未检查异常的类别。

更多精彩内容其他人还在看

Spring Boot 配置 IDEA和DevTools 热部署的方法

这篇文章主要介绍了Spring Boot 配置 IDEA和DevTools 热部署的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

SpringBoot使用Redis缓存的实现方法

这篇文章主要介绍了SpringBoot使用Redis缓存的实现方法,需要的朋友可以参考下
收藏 0 赞 0 分享

SpringBoot中自定义参数绑定步骤详解

这篇文章主要介绍了SpringBoot中自定义参数绑定步骤详解,非常不错,具有参考借鉴价值 ,需要的朋友可以参考下
收藏 0 赞 0 分享

Java实现abc字符串排列组合

这篇文章主要为大家详细介绍了JAVA实现abc字符串的排列组合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java中后台线程实例解析

这篇文章主要介绍了Java中后台线程实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

ehcache模糊批量移除缓存的方法

本篇文章主要介绍了ehcache模糊批量移除缓存的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Java多线程join方法实例代码

这篇文章主要介绍了Java多线程join方法实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现字符串排列组合问题

这篇文章主要为大家详细介绍了java实现字符串排列组合问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java排列组合字符串的方法

这篇文章主要介绍了Java排列组合字符串的方法
收藏 0 赞 0 分享

Java语言中的自定义类加载器实例解析

这篇文章主要介绍了Java语言中的自定义类加载器实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多