Java 异常是一种中断正常程序流程的机制,通常(但不一定)出现阻止继续处理的错误时。例外对于“恐慌中止弹出!!”最有用。条件。
在编写程序时,您经常会遇到一些无法继续进行的情况。一个程序中经常有很多这样的条件。例如,假设您正在读取一个应该包含姓名和地址列表的文件。您可能会发现在硬盘驱动器上找不到该文件。格式可能与您的预期不符。可能有重复的条目。等等。其中一些错误可能会使操作根本无法继续,例如“找不到文件”。在其他情况下,您可能不得不放弃记录,但可以继续处理文件中的剩余记录。
在发明异常之前,程序员经常发现自己使用深度嵌套的 IF 来处理所有可能的错误。喜欢(一些伪代码,没有特定的语言):
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 ...
}
}
}
}
随着错误条件数量的增加,这可能会变得非常混乱。例外让我们在任何时候都能摆脱困境,而不需要一堆“else”子句。
此外,我们经常有调用其他函数的函数,这些函数调用其他函数等,或者循环中的循环。一些错误可以在结构的深处进行处理。这主要是指我们可以处理和恢复的那些,比如不良记录。其他的要上级处理。这主要意味着我们所能做的就是中止进程并为用户显示错误消息或将错误写入日志文件或其他任何内容。异常让我们通过设置捕获错误的级别来做到这一点。我们可以在可能产生错误的语句之后立即放置“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 击落了整个事情。
异常的第三个优点是它们有助于清楚地识别异常条件。
嗯,这就是一个教程,我要写下我的头顶!