gpt4 book ai didi

抛出异常的函数的 Java 字段初始化

转载 作者:行者123 更新时间:2023-11-29 05:43:24 25 4
gpt4 key购买 nike

我有一个问题可以归结为考虑这个类:

class myClass
{
static int s_int = getInteger();

static int getInteger() throws myClassException
{
...

这是我的问题:这不会编译,因为 getInteger() 抛出 myClassException 并且我在初始化 s_int 时没有 try catch block >.

当然,一个解决方案是构建一个不会抛出异常的 getIntegerAndDealWithTheException() 并在初始化 s_int 时调用它。但我宁愿不这样做,因为那不是那么漂亮:我宁愿不要用 stub 乱扔代码。

我是否在初始化 s_int 时遗漏了语法技巧?

非常感谢!

最佳答案

您可以使用静态初始化器。静态初始化程序是 static {} 之间的代码块,用于初始化 static 变量,这些变量比简单的声明和表达式需要更多代码.

class myClass
{
static int s_int;

static
{
try {
s_int = getInteger();
} catch (myClassException e) {
// Handle it here.
}
}

static getInteger() throws myClassException
{
...

根据 JLS 11.2.3,静态初始化程序可能不会抛出已检查的异常.引用:

It is a compile-time error if a class variable initializer (§8.3.2) or static initializer (§8.7) of a named class or interface can throw a checked exception class.

因此您必须捕获 Exception,这意味着您需要的不仅仅是一个简单的声明和表达式,因此静态初始化程序在这里完成了这项工作。

关于抛出异常的函数的 Java 字段初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com