java中有什么异常?

java中有什么异常?

问题描述:

我havea关于Java异常几个问题:java中有什么异常?

  1. 什么是Java异常?

  2. 是否认为异常是错误?

  3. 什么时候应该抛出异常?

  4. 有多少种例外?

+12

做自己的功课。 – 2010-05-10 11:57:15

+3

我不认为这是作业:)家庭作业问题往往只是“复制”,这里有太多的拼写错误! – LukeN 2010-05-10 11:58:19

+1

然而,欢迎一定程度的谦虚和自嘲,考虑改变你的名字。 – 2010-05-10 12:00:17

  1. 的东西在代码失败的信号,但是这是编程恢复。

  2. 取决于你如何解释“错误”。这是不明确的。

  3. 当您想要在代码中发出某个失败的信号,但是这是程序可恢复的。

  4. 无数。你也可以创建自定义的。

要了解有关例外的更多信息,请检查Sun tutorial on the subject

+0

你没有帮助,相反,无论如何指责querstioner,你是多么成熟! – 2010-05-10 12:14:05

+11

对不起,但这不是我的错,你懒得看手册。 – 2010-05-10 12:22:40

  1. 异常是应用程序中的可恢复错误。

  2. 这与您正在做什么以及用户期望的相关。假设你有一个除以0的例外,你的应用程序是一个计算器。大多数用户会希望会弹出一条消息,说明他们除以0.

  3. 您应该随时抛出异常。你可以让一个应用程序不做任何事情抛出异常。就像一个令人敬畏的文字处理器,每当你点击一个键时会抛出异常,但是当它捕捉到异常时,它会输出刚输入的字符。此外,你可以做一个真棒的连接四个游戏,每当你赢了,它会抛出一个异常。

  4. 有许多类型的例外。用户产生的异常(由“掷”命令完成),一个系统的异常(由0分的一个例子),等等,等等

+0

我还应该补充说,一个异常不一定是错误,所以你不应该总是认为异常是一个“坏”的东西。 – Daniel 2010-05-10 13:16:19

什么是Java异常?

这是一个用于识别应用程序中意外行为的类。

是否将异常视为错误?

始终没有(和取决于你所说的错误)

我什么时候应该抛出异常?

当你的应用程序进入意外状态或哟希望信号的意外行为

多少种例外?

有三种:

  • 经过异常(必须处理即FileNotFoundException异常)

这些异常是不可归咎于程序员,但对环境的运行成和程序员可以做一些事情(程序员可以处理它)

  • 运行时错误纳秒(亦称GoodProgrammerExpected TM,不应该被处理,即空指针异常)

这些例外是程序员的故障和发起的坏编码实践(或知识),并且可以总是被阻止,即,不检查阵列边界。

  • 错误(即OutOfMemoryError异常,应处理)

这些异常是不可归责于程序员,但它运行到环境中,他们从检查异常的事实有所不同,程序员对此无能为力。例如,如果系统内存不足,请参阅this answer以获得更详细的解释。

顺便说一句,你还可以创建自己的例外...例如:

coder's revenge

Java异常是打断正常的程序流程,通常是一个机制 - 虽然不一定 - - 当出现阻止继续处理的错误时。例外情况对于“恐慌中止弹出!!”非常有用条件。

通常在编写程序时遇到一些无法继续的情况。程序中通常有很多这样的条件。例如,假设您正在读取应该包含名称和地址列表的文件。您可能会发现无法在硬盘上找到该文件。格式可能与您所期望的不符。可能有重复的条目。等等这些错误中的一些可能导致根本无法继续进行操作,如“找不到文件”。在其他情况下,您可能不得不放弃记录,但可以继续处理文件中的剩余记录。

在发明异常之前,程序员经常发现自己拥有深度嵌套的IFs以应对所有可能的错误。像(某些伪代码,没有特定的语言):

fileHandle=open("myfile.txt"); 
if (fileHandle==null) 
{ 
    writeMessage("File not found"); 
} 
else 
{ 
    while (record=fileHandle.read()) 
    { 
    parseRecord(record); 
    if (parseError) 
    { 
     writeMessage("Invalid record format"); 
    } 
    else 
    { 
     lookupRecord(record); 
     if (found) 
     { 
     writeMessage("Duplicate record"); 
     } 
     else 
     { 
     ... etc ... 
     } 
    } 
    } 
} 

随着错误条件数量的增加,这可能会变得非常混乱。例外情况让我们可以在任何时候纾困,而不需要大量的“其他”条款。另外,我们经常拥有调用其他函数的函数,这些函数调用其他函数等,或循环内的循环内的循环。一些错误可以在结构内深处处理。这主要意味着我们可以处理和恢复的那些,就像一个糟糕的记录。其他人应该得到更高层次的处理。这主要意味着我们所能做的就是中止进程并为用户显示一条错误消息或者将错误写入日志文件或其他东西。例外情况让我们通过设定一个可以捕捉错误的级别来做到这一点。我们可以在产生错误的语句之后立即放置“catch”块,并采取一些纠正措施。我们可以稍微提高一点,放弃处理一个记录,但继续下一个记录。或者我们可以把它放在最上面来放弃整个事情。以上例为例:

try 
{ 
    fileHandle=open("myfile.txt"); 
    if (fileHandle==null) 
    throw new FileException("File not found") 
while (record=fileHandle.read()) 
{ 
    try 
    { 
    parseRecord(record); 
    if (parseError) 
     throw new RecordException("Invalid format") 
    lookupRecord(record); 
     throw new RecordException("Duplicate record") 
    ... etc ... 
    } 
    catch (RecordException e) 
    { 
    showMessage(e.getMessage()) 
    } 
} 
catch (FileException e) 
{ 
    showMessage(e.getMessage()) 
} 

请注意,RecordException将中止处理记录,但让我们继续下一步。一个FileException抛下了整个事情。

异常的第三个优点是它们有助于清楚地识别异常情况。

那么,这是一个教程,因为我要写我的头顶!

异常子类表示程序可以合理恢复的错误。除了RuntimeException及其子类(见下文)外,它们通常表示程序在正常任务过程中预期会发生的错误:例如,网络连接错误和文件系统错误。

enter image description here

1-一个例外是一个事件,它的程序,扰乱的程序的指令的正常流动的执行期间发生。

2-错误“表示合理的应用程序不应尝试捕捉的严重问题”。而 - “异常”表示合理应用程序可能想要捕获的条件。“

3 - 我的个人指南是:当发现当前代码块的基本假设为假时抛出异常。

4-检查异常通常是程序可以从中恢复的异常&以编程方式从这些异常中恢复可能是一个好主意。示例包括FileNotFoundException,ParseException等。程序员需要通过使用try-catch块来检查这些异常,或将其返回给调用者

另一方面,我们有未经检查的异常。这些都是那些如果一切顺利都不会发生的例外,但它们确实发生了。示例包括ArrayIndexOutOfBoundException,ClassCastException