Java Top.

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程

1.介绍

在本教程中,我们将覆盖如何在Java中创建一个自定义异常

我们将展示如何实现用户定义的异常,并用于检查和未选中的异常。

进一步阅读:

Java中的例外处理

了解Java中的异常处理的基础以及一些最佳和最糟糕的实践。

在Java中检查和未选中的异常

通过一些示例了解Java的检查异常和未检查异常之间的区别

常见的Java异常

对常见Java异常的快速概述。

2.需要自定义例外

Java异常涵盖几乎所有必然会发生在编程中的所有常见异常。

但是,我们有时需要用自己的方式补充这些标准的例外。

引入自定义异常的主要原因是:

  • 业务逻辑异常 - 特定于业务逻辑和工作流的例外。这些帮助应用程序用户或开发人员了解确切的问题是什么
  • 捕获并为现有Java例外的子集提供特定的处理

可以检查和未选中Java异常。在下一节中,我们将涵盖这两种情况。

3.自定义检查异常

检查的异常是需要明确对待的例外情况。

让我们考虑一条返回文件第一行的代码:

尝试(扫描仪文件=新扫描仪(新文件(文件名))){if(file.hasnextline())返回file.nextline();catch(filenotfoundexception e){//日志记录等}

上面的代码是处理java检查异常的经典方式。虽然代码抛出filenotfoundException,确切的原因是什么还不清楚——是文件不存在还是文件名无效。

要创建自定义异常,我们必须扩展java.lang.Exception.类。

让我们通过创建自定义已检查异常调用来查看这方面的一个示例不正确的菲伦萨塞奇奇:

公共类不正确FileNameException扩展了异常{public frorrectfilenameexception(string errormessage){super(errormessage);}}

请注意,我们还必须提供一个需要一个构造函数细绳作为错误消息并称为父类构造函数。

这就是我们需要执行的只是定义自定义异常。

接下来,让我们看看我们如何在我们的示例中使用自定义异常:

尝试(扫描仪文件=新扫描仪(新文件(文件名))){if(file.hasnextline())返回file.nextline();} catch(filenotfoundexception e){if(!iscorrectfilename(filename)){over new nultorrecfilenameexception(“文件名不正确:”+ filename);} // ...}

我们已经创建并使用了一个自定义异常,因此用户现在可以知道确切的异常是什么。这是足够的吗?我们因此失去了异常的根本原因

要解决此问题,我们还可以添加一个java.lang.throwable.参数到构造函数。这样,我们可以将根异常传递给方法调用:

public fillendfilenameexception(string errormessage,throwable err){super(errormessage,err);}

现在IncorrectFileNameException与这样的例外的根本原因一起使用:

尝试(扫描仪文件=新扫描仪(新文件(文件名))){if(file.hasnextline()){return file.nextline();catch(filenotfoundexception err){if(!iscorrectfilename(filename)){over new fillectfilenameexception(“文件名不正确:”+ filename,错误);} // ...}

这是我们如何使用自定义例外没有失去他们发生的根源

4.自定义未经检查的异常

在我们的例子中,假设如果文件名不包含任何扩展名,我们需要自定义异常。

在这种情况下,我们需要类似于前一个的自定义未选中的异常,因为在运行时才会检测到此错误。

要创建自定义未选中的异常,我们需要扩展java.lang.runtimeexception.

公共类不正确的文件伸展exception扩展了Runtimeexception {public filrectfileextensionException(string errormessage,throwable err){super(errormessage,err);}}

因此,我们可以在我们的示例中使用此自定义未选中的异常:

尝试(扫描仪文件=新扫描仪(新文件(文件名))){if(file.hasnextline()){return file.nextline();} else {投掷新的IllegalArgumentException(“非可读文件”);catch(filenotfoundexception err){if(!iscorrectfilename(filename)){over new fillectfilenameexception(“文件名不正确:”+ filename,错误);} // ...} catch(IllegalargumentException err){if(!containsextension(filename)){oppl新的不正确的文件伸展exception(“文件名不包含扩展名:”+ filename,Err);} // ...}

结论

当我们需要处理与业务逻辑相关的特定异常时,自定义异常非常有用。如果使用得当,它们可以作为更好的异常处理和日志记录的有用工具。

本文中使用的示例的代码可用在github上

Java底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
对这篇文章的评论关闭!