当前位置: 首页 > 面试题库 >

是否可以在不添加throws声明的情况下引发异常?

唐运诚
2023-03-14
问题内容

我有以下情况。

我有一个从另一个基类继承并重写一个方法的Java类。基本方法不会引发异常,因此没有throws ...声明。

现在我自己的方法应该能够引发异常,但是我要么有选择

  • 吞下异常
  • 添加抛出声明

两者都不令人满意,因为第一个会默默地忽略异常(好的,我可以执行一些日志记录),第二个会因为方法头不同而产生编译器错误。

public class ChildClass extends BaseClass {

        @Override 
        public void SomeMethod() {
            throw new Exception("Something went wrong");
        }
}

问题答案:

如果确实需要,可以抛出未经检查的异常而不必声明它们。未检查的异常扩展RuntimeException。扩展的Throwables
Error也未选中,但仅应用于完全无法处理的问题(例如无效的字节码或内存不足)。

作为特定情况,添加UncheckedIOException了Java
8 用于包装和重新投掷IOException



 类似资料:
  • (是的,这是hacky,可能不是最佳实践,但它是体积最小的解决方案) 我有一个涉及几个jar的项目——一个可运行的启动器、一个服务器、一个服务器的包装器和服务器的插件。 启动器通过启动一个新的未连接的进程、一个子进程或者只是实例化它来运行包装器,这取决于配置。对于这个问题来说,这应该不重要。 包装器使用URLClassLoader来加载服务器jar并启动它,这工作正常。 在启动服务器之前,包装器会

  • 问题内容: 我处理非常大的二进制文件(每个文件从几个GB到多个TB)。这些文件以旧格式存在,并且升级需要将标头写入文件的FRONT。我可以创建一个新文件并重写数据,但是有时这可能需要很长时间。我想知道是否有更快的方法来完成此升级。该平台仅限于Linux,我愿意使用低级功能(ASM,C,C ++)/文件系统技巧来实现这一目标。基本库是Java,JNI是完全可以接受的。 问题答案: 没有本机执行此操作

  • 问题内容: 在试验/快速而肮脏的开发阶段,Maven2让我发疯。 我有一个文件,该文件定义了要使用的Web应用程序框架的依赖关系,并且可以从该文件快速生成入门项目。但是,有时我想链接到尚未定义文件的第三方库,因此,不是pom.xml手动为第三方库创建文件并安装它,然后将依赖项添加到我的,告诉:“除了我定义的依赖项之外,还包括其中的所有。” 看起来这应该很简单,但是如果是这样,我就缺少了一些东西。

  • 问题内容: 如果要使用Linq-SQL,还必须将DB Table拖到设计器表面以创建实体类。 我一直喜欢我的应用程序中的完全控制权,并且不喜欢dotnet创建的类。 是否可以使用我自己的数据访问层实体类在Linq和DB之间提供此连接? 我该如何完成? 问题答案: 您可以使用Linq-to-SQL非常轻松地编写自己的类-只需使用一些属性绘制类即可。 例如,这是我的一个项目中有一个非常简单的表,它可以

  • 问题内容: 据我了解,initrd是一个小图像,可以在RAM中加载。它用于引导带有所有可加载模块的完整内核。在此过程中,我们需要vmlinuz内核映像,它是bzImage的重命名版本。 是否可以在不创建initrd映像的情况下引导内核? 问题答案: initrd / initramfs是可选的,不是必需的。bzImage是纯内核映像,可以由引导加载程序直接引导。但是,可能需要执行某些任务(通常需要

  • 问题内容: 我正在评估JOOQ是否可在仍在开发中的新系统中使用。我想避免在与应用程序一起开发数据库时生成代码,而只是为该应用程序起持久存储的作用。因此,预计数据库模式定义将由Java代码(java中的表定义)驱动。 JOOQ是否适合上述用例?是否有用于模式定义的Java DSL? 问题答案: JOOQ是否适合上述用例? 是的,许多jOOQ用户仅使用运行时库,而没有代码生成器。入门指南中提供了示例。