java中的三种异常类型

错误是用户和程序员的祸根。开发人员显然不希望他们的程序每次都出错,用户现在已经习惯了程序中的错误,以至于他们不情愿地接受为几乎肯定至少会有一个错误的软件付费。Java的设计目的是让程序员有机会设计一个无错误的应用程序。当应用程序与资源或用户交互时,程序员会知道存在一些异常,并且这些异常是可以处理的。不幸的是,有些例外是程序员无法控制或忽略的。简言之,并非所有的异常都是平等创建的,因此程序员需要考虑...

错误是用户和程序员的祸根。开发人员显然不希望他们的程序每次都出错,用户现在已经习惯了程序中的错误,以至于他们不情愿地接受为几乎肯定至少会有一个错误的软件付费。Java的设计目的是让程序员有机会设计一个无错误的应用程序。当应用程序与资源或用户交互时,程序员会知道存在一些异常,并且这些异常是可以处理的。不幸的是,有些例外是程序员无法控制或忽略的。简言之,并非所有的异常都是平等创建的,因此程序员需要考虑几种类型。

Program code, HTML and JavaScript on LCD screen

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

选中的异常

检查异常是Java应用程序应该能够处理的异常。例如,如果应用程序从文件读取数据,它应该能够处理FileNotFoundException。毕竟,无法保证预期的文件将位于它应该位于的位置。文件系统上可能发生任何应用程序不知道的事情。

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

public FileReader(String fileName) throws FileNotFoundException

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

public static void main(String[] args){ FileReader fileInput = null; //Open the input file fileInput = new FileReader("Untitled.txt"); }

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

public static void main(String[] args) throws FileNotFoundException{ FileReader fileInput = null; //Open the input file fileInput = new FileReader("Untitled.txt"); }

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

public static void main(String[] args){ FileReader fileInput = null; try { //Open the input file fileInput = new FileReader("Untitled.txt"); } catch(FileNotFoundException ex) { //tell the user to go and find the file } }

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

错误

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

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

运行时异常

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

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

  • 发表于 2021-09-20 08:54
  • 阅读 ( 175 )
  • 分类:编程

你可能感兴趣的文章

扔(throw)和抛出java(throws in java)的区别

关键区别——java中的throw与throws 编程时可能会出错。程序中的错误会产生意外的结果,也可能会终止程序的执行。因此,正确地检测和管理错误,才能正确地执行程序。错误可以有两种类型。它们是编译时错误和运行时错误...

  • 发布于 2020-09-21 19:02
  • 阅读 ( 360 )

选中的(checked)和java中的未检查异常(unchecked exception in java)的区别

关键区别——java中的检查异常与未检查异常 异常是运行时错误。有两种类型的异常称为检查异常和未检查异常。当发生选中的异常时,Java应用程序连接到外部资源,如文件、设备或数据库。这些异常由编译器检查。检查的...

  • 发布于 2020-10-19 08:38
  • 阅读 ( 284 )

最终决赛(final finally)和用java完成(finalize in java)的区别

关键区别–java中的final vs finally vs finalize final、finally和finalize是Java编程中常用的术语。期末考试是一个关键词。它可以用于变量、方法或类。声明为final的变量只能初始化一次。他们不能改变。由于Java是一种支持面向对象编...

  • 发布于 2020-10-19 15:24
  • 阅读 ( 244 )

初学者必备的8个eclipse键盘快捷键

...gt;Rename,输入新名称,让Eclipse在一秒钟内更改整个项目中的每个引用。甚至更快,您可以单击名称,按Alt+Shift+R,键入新名称,然后按Enter。砰,搞定! ...

  • 发布于 2021-03-11 23:36
  • 阅读 ( 340 )

java异常:您处理的对吗?

编程中的异常表示程序执行过程中某个时刻的异常情况。当异常情况可以在其他地方更好地处理而不是在遇到异常情况的地方处理时,可以使用它。考虑以下示例: ...

  • 发布于 2021-03-13 09:11
  • 阅读 ( 262 )

如何正确处理java异常

...处理,因此如果您从Java开始,您可以随身携带这些技巧中的大部分。 ...

  • 发布于 2021-03-14 17:31
  • 阅读 ( 241 )

如何从病毒感染中恢复:你需要做的三件事

如果您的计算机感染了病毒或其他恶意软件,则从计算机中删除恶意软件只是第一步。你还需要做更多的事来确保你的安全。 请注意,并非每个防病毒警报都是实际感染。如果你的防病毒程序在有机会在你的电脑上运行之前就...

  • 发布于 2021-04-11 15:06
  • 阅读 ( 150 )

java(java)和java核心技术(core java)的区别

...,从链表到数组列表,从队列到异常处理的所有内容。有三种基于Java编程语言的计算平台,包括javase。它仍然是基于OOP概念的最广泛使用的平台,并且通常用于便携式桌面应用程序的开发。除了通用API之外,它还包括开发工具...

  • 发布于 2021-06-25 05:49
  • 阅读 ( 302 )

选中的(checked)和未检查的异常(unchecked exception)的区别

Java中的异常处理是处理运行时代码序列中出现的特定错误的强大机制之一。异常只不过是中断应用程序正常流程的运行时错误。 它通常发生在一段代码中,当它发生时,将创建一个表示该异常的对象,并将其抛出导致该异常的...

  • 发布于 2021-06-25 08:14
  • 阅读 ( 405 )

什么是文学反讽的三种类型(the three types of irony in literature)

...、戏剧反讽、情景反讽、宇宙反讽、苏格拉底反讽就是其中的一类。在这些类别中,有三种类型被认为比其他类型更重要;他们是, 反语 戏剧反讽 情景反讽 现在让我们详细看看这三种类型的讽刺。 什么是情景式反语(situationa...

  • 发布于 2021-06-27 16:38
  • 阅读 ( 832 )
路不停
路不停

0 篇文章

相关推荐