gpt4 book ai didi

java - Java中的构造函数可以抛出异常吗?

转载 作者:行者123 更新时间:2023-12-01 05:45:42 25 4
gpt4 key购买 nike

构造函数是否允许抛出异常?

最佳答案

是的,构造函数可以抛出异常。通常这意味着新对象可以立即进行垃圾回收(当然,尽管它可能在一段时间内不会被回收)。不过,如果“半构造”对象在构造函数中较早地使其自身可见(例如,通过分配静态字段或将其自身添加到集合中),则它可能会保留下来。

在构造函数中抛出异常需要注意一件事:因为调用者(通常)将无法使用新对象,所以构造函数应该小心避免获取非托管资源(文件句柄等),然后抛出异常而不释放它们。例如,如果构造函数尝试打开一个 FileInputStream 和一个 FileOutputStream,并且第一个成功但第二个失败,则应尝试关闭第一个流。当然,如果它是抛出异常的子类构造函数,这会变得更加困难......这一切都变得有点棘手。这不是一个经常出现的问题,但值得考虑。

关于java - Java中的构造函数可以抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5963048/

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