构造函数中的异常

2023-11-21

在 C++ 中,对象的生命周期从构造函数成功完成时开始。在构造函数内部,该对象还不存在。

问:从构造函数发出异常意味着什么?

答:这意味着构造失败,该对象从未存在过,其生命周期从未开始。 [source]

我的问题是:Java 也是如此吗?例如,如果我把手this到另一个对象,然后我的构造函数失败?

Foo()
{
    Bar.remember(this);
    throw new IllegalStateException();
}

这是明确定义的吗?做Bar现在有一个非对象的引用?


该对象存在,但未正确初始化。

这种情况随时可能发生this构造期间泄漏(不仅仅是抛出异常时)。

这是一个非常有问题的情况,因为一些通常假设的保证在这种情况下并不成立(例如final字段在施工过程中似乎可能会改变其价值)。

因此你绝对应该避免泄漏this在构造函数中。

这篇 IBM DeveloperWorks 文章描述构建对象时要采取的预防措施以及这些预防措施背后的原因。虽然本文根据多线程讨论了该主题,但当未知/不受信任的代码引用到时,您可能会在单线程环境中遇到类似的问题this施工期间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构造函数中的异常 的相关文章

  • 如果测试用例失败,Selenium Web 驱动程序无法关闭 Firefox 实例

    我各位 我正在使用 junit 和 selenium web 驱动程序 2 28 问题是 如果我运行成功的测试用例 Web 驱动器能够关闭 Firefox 实例 但是当测试用例失败时 Selenium Web 驱动器无法关闭 Firefox
  • ElasticBeanstalk Java,Spring 活动配置文件

    我正在尝试通过 AWS ElasticBeanstalk 启动 spring boot jar 一切正常 配置文件为 默认 有谁知道如何为 java ElasticBeanstalk 应用程序 不是 tomcat 设置活动配置文件 spri
  • Java程序中的数组奇怪的行为[重复]

    这个问题在这里已经有答案了 我遇到了这个 Java 程序及其以意想不到的方式运行 以下程序计算 int 数组中元素对之间的差异 import java util public class SetTest public static void
  • ExceptionConverter:java.io.IOException:文档没有页面。我正在使用 iText

    当我执行下面的代码时 File f new File c sample pdf PdfWriter getInstance document new FileOutputStream f document open System out p
  • Java8无符号算术

    据广泛报道 Java 8 具有对无符号整数的库支持 然而 似乎没有文章解释如何使用它以及有多少可能 有些函数 例如 Integer CompareUnsigned 很容易找到 并且似乎可以实现人们所期望的功能 但是 我什至无法编写一个简单的
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • hibernate总是自己删除表中的所有数据

    您好 我正在开发一个 spring mvc 应用程序 它使用 hibernate 连接到存储文件的 mysql 数据库 我有两个方法 一个方法添加我选择的特定文件路径中的所有文件 另一种方法调用查询以返回从 mysql 存储的文件列表 问题
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • Microsoft Graph 身份验证 - 委派权限

    我可以使用 Microsoft Graph 访问资源无需用户即可访问 https developer microsoft com en us graph docs concepts auth v2 service 但是 此方法不允许我访问需
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • 如何在 JFreeChart TimeSeries 图表上显示降雨指数和温度?

    目前 我的 TimeSeries 图表每 2 秒显示一个位置的温度 现在 如果我想每2秒显示一次降雨指数和温度 我该如何实现呢 这是我的代码 import testWeatherService TestWeatherTimeLapseSer
  • 使用 AWS Java SDK 为现有 S3 对象设置 Expires 标头

    我正在更新 Amazon S3 存储桶中的现有对象以设置一些元数据 我想设置 HTTPExpires每个对象的标头以更好地处理 HTTP 1 0 客户端 我们正在使用AWS Java SDK http aws amazon com sdkf
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • 如何测试 spring-security-oauth2 资源服务器安全性?

    随着 Spring Security 4 的发布改进了对测试的支持 http docs spring io spring security site docs 4 0 x reference htmlsingle test我想更新我当前的
  • 如何修复“sessionFactory”或“hibernateTemplate”是必需的问题

    我正在使用 Spring Boot JPA WEB 和 MYSQL 创建我的 Web 应用程序 它总是说 sessionFactory or hibernateTemplate是必需的 我该如何修复它 我已经尝试过的东西 删除了本地 Mav
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是

随机推荐

  • 如何在 Gridview 中的 RowDataBound 事件中更改 Eval() 字段的值

    我有一个网格视图
  • 处理与 Django 中的应用程序无关的静态文件

    在文档中https docs djangoproject com en dev howto static files 我读到静态文件应该与各自的应用程序放在一起并调用 load staticfiles img src css base cs
  • requestLegacyExternalStorage 在 Android 11 - API 30 中不起作用

    Google 最近在 API 29 中引入了一些与存储 API 相关的更改 例如范围存储 我们通过在 Manifest 中添加 requestLegacyExternalStorage true 来选择退出 但现在当我的 targetSdk
  • 如何提高 JAXB 性能?

    这是我的转换代码 当我们处理大数据时 这需要很长时间 调用该方法几乎一百万次 我们可以清楚地看到它持有线程一段时间 请建议我一些提高性能的方法 public class GenericObjectXMLConverter
  • Scala 类型推理混乱:有还是没有?

    原始版本 trait Animal F A case class Cat F I A limits F I f I gt A extends Animal F A object ConfuseMe def confuse F A tt An
  • 使用转换器直接绑定到 DataContext 时的 WPF 更新绑定

    通常 当您希望数据绑定控件 更新 时 您可以使用 PropertyChanged 事件向界面发出信号 表明数据已在后台发生更改 例如 您可以有一个文本块 该文本块通过属性 DisplayText 绑定到数据上下文
  • 操作/编辑现有 xml 文档的最佳 java Xml 解析器

    任务 我有一个现有的 xml 文档 UTF 8 它使用 xml 命名空间和 xml 模式 我需要解析特定元素 将内容 还需要使用 xml 命名空间前缀 附加到该元素 然后再次写出文档 我应该使用哪个最佳的 XML 解析器库来完成此任务 我看
  • JSONObject 中的 JSONObject

    我有一个这样的 API 输出 user status stat1 54 stats2 87 我创建一个简单的JSONObject从这个 API 中 JSONObject json getJSONfromURL URL 之后我可以像这样读取用
  • 使用 Swift 执行“killall”时不允许进行操作

    我正在尝试创建一个菜单栏应用程序来隐藏桌面图标 并希望其他各种东西主要是为了了解有关 Swift 的更多信息 但由于某种原因我无法让它工作 当我运行该程序并单击其中一个菜单项时 没有任何反应 并且我在控制台中收到此警告 killall wa
  • 如何在 Vim 中每次按键时将当前缓冲区的内容写回文件?

    我希望 Vim 尽可能频繁地自动写入我的文件 理想的情况是每次击键 我需要定期保存 以便我的后台构建过程能够看到它 它是 LaTeX 文档的 makefile 我希望预览器在我完成输入后向我显示一个几乎最新的文档 最终解决方案 下面的答案有
  • genymotion player.exe 停止工作

    当我尝试启动 genymotion Android 模拟器时 它给我一个错误 player exe 已停止工作我尝试寻找答案并发现this但是 我之前遇到了 open gl 2 0 问题 为此我更新了显卡驱动程序 我的主板是华硕 P5G41
  • 更新 matplotlib 动画中的 x 轴标签

    这是一段说明我的问题的玩具代码 import numpy as np import matplotlib pyplot as plt from matplotlib animation import FuncAnimation fig ax
  • 在字符串中每 3 个字符后插入句点

    我有这个 from future import print function def f comma p string v string p string if type v string type int or type v string
  • 为什么要写 `window[ "eval" ].call( window, data );`

    jQuery 1 7rc1 第 614 行 window eval call window data 为什么不简单地写 eval call window data 答案在这里 解码 jQuery Jim Driscoll 发现对于更尊重标准
  • Git 如何处理符号链接?

    如果我有一个文件或目录是符号链接 并且我将其提交到 Git 存储库 那么它会发生什么情况 我假设它会将其保留为符号链接 直到文件被删除 然后如果您从旧版本中拉回文件 它只会创建一个普通文件 当我删除它引用的文件时它会做什么 它只是提交悬空链
  • JPanel 使用 Graphics 自定义绘图

    我有一个自定义 JPanel 有时在我的程序中 我需要调用一个将屏幕绘制为黑色的方法 就是这样 public void clearScreen Graphics g getGraphics g setColor Color black g
  • C# - 无法在 WinForms 的列表框中执行键值对

    我正在使用 WinForms 中的 ListBox 编写 C 应用程序 我从 XML 文件获取数据 ID 和全名 我想在列表框中显示全名 当我选择其中之一时 我想获取相关的 ID 我尝试使用SelectedValue财产没有运气 我也尝试过
  • MenuItemCompat.getActionView 始终返回 null

    我刚刚实施了v7 AppCompat支持库但是MenuItemCompat getActionView在我测试的每个 Android 版本中总是返回 null 4 2 2 2 3 4 The SearchView显示在操作栏中 但它不响应触
  • UDP(数据报)套接字的 FIONREAD 返回什么? [复制]

    这个问题在这里已经有答案了 哪一个做ioctl of FIONREAD返回 下一个数据包的长度 还是缓冲区中所有数据的长度 假设有一个UDP服务器接收来自客户端 1 的 2 个数据包 并在客户端 1 的数据包之后接收来自客户端 2 的另外
  • 构造函数中的异常

    在 C 中 对象的生命周期从构造函数成功完成时开始 在构造函数内部 该对象还不存在 问 从构造函数发出异常意味着什么 答 这意味着构造失败 该对象从未存在过 其生命周期从未开始 source 我的问题是 Java 也是如此吗 例如 如果我把