抛出异常还是阻止异常?

2024-01-31

问题是是否更愿意Throw an exception或防止其发生。这是一个游戏项目。

IndexOutOfBoundsException与围绕它进行编码相比。

我有一个List<E>

private Attribute<List> attributes;

一种通过索引获取项目的方法。

public Attribute getAttribute (int index) {
    if (index < 0 || index >= attributes.size())
        index = 0;

    return attributes.get(index);
}

在这种情况下,我默认为列表的第一个元素。


快速失败通常是一个好主意:如果将索引 -1 传递给该方法,则可能意味着调用该方法的代码中存在错误。如果您默默地使用index = 0,(a) 调用代码可能不会收到预期的结果,(b) 您可能不会注意到该错误,直到它变得非常混乱而需要修复。

所以我会简单地使用:

public Attribute getAttribute (int index) {
    return attributes.get(index);
}

如果需要的话会抛出异常。如果调用此方法的代码没有错误,则永远不应抛出该异常。

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

抛出异常还是阻止异常? 的相关文章

随机推荐

  • CSS“下划线”文本部分

    如何为文本添加下划线以获得与 测试 下看到的相同效果 我尝试将 TEST 封装在span并添加绝对 after withposition absolute 但我认为这不是正确的方法 并没有得到预期的结果 这是 HTML h1 class w
  • 使用 getevent 在已 root 的 Android 手机上拒绝权限

    我有非常简单的代码如下 Override public void onClick View v Log i MyApp Started try Process processStart Runtime getRuntime exec su
  • 如何使用右/左在sqldf中分割变量,如left(x,n)

    R 中是否有不同的函数可以用来获得与 SQL 中左函数或右函数相同的结果 例如 以下 SQL 查询将给出列的前 6 个字符 select left x 6 from table 但是 当我在 sqldf 中尝试这样做时 如下所示 sqldf
  • 如何计算图像的直方图?

    我该如何解决以下错误 import cv2 img cv2 imread home monojit Desktop crop jpg hsv cv2 cvtColor img cv2 COLOR BGR2HSV hist cv2 calcH
  • R 是否有依赖于系统的功能?

    我的同事希望确保我们在 R 中的工作独立于平台 特别是代码可以在 Linux Mac 和 Windows 上运行 并且在一个系统上创建的文件可以在其他系统上运行 由于这个问题之前在我的团队中出现过 我希望得到一个笼统的答案 这将使我更容易自
  • 一段时间后,条形码扫描仪抛出 java.lang.UnsatisfiedLinkError

    我有一个使用新的 Android 视觉库的条形码扫描仪 它在我的设备和其他几个设备上完美运行 但突然它停止工作 我在日志中看到以下异常 No implementation found for com google android gms v
  • Unity中如何设置文本的字体大小?

    如何使标签中的字体变大 我用这个函数来显示文本 function OnGUI GUI color Color green GUI Label Rect 500 350 200 50 Lose 结果是 我怎样才能把这个文字变大 只需创建一个合
  • 如何从我的程序中列出 Internet Explorer 使用的插件 (BHO)?

    我需要在我的 Win32 独立程序中检索 当前安装的 Internet Explorer 加载项列表 浏览器帮助程序对象 以及 如果可能 它们的启用 禁用状态 由于反间谍软件程序 或例如Autoruns https technet micr
  • go lang中按不同维度对点(结构)进行排序

    我有一个 Points 类型的多维点列表 我已经实施了sort Sort界面 现在可以排序y value e g type Points Point func points Points Len int return len points
  • 当视图不与模型交互时,这就是 MVC 吗?

    我设计了一个 MVC 在 NET 中 其中视图没有到模型的链接 它只知道控制器 传统的 MVC 模式的所有部分都相互通信 就我而言 控制器基本上是一个调解者 这会将任何异常或逻辑排除在视图之外 它对模型的依赖性为零 这不再是 MVC 了吗
  • 使用 Three.js 单击网格获取像素的颜色值

    我正在使用 Three js 的最新版本 我得到了一个带有 2D 网格和渐变颜色的场景 颜色取决于分配给每个顶点的值 我想通过用鼠标单击渐变的每个点来获取它的值 通过获取颜色 并对我的值进行一些数学计算 我尝试使用这样的系统 因为它在这里工
  • 使用toggleClass更改类后的jQuery事件

    我对 jQuery 和toggleClass 有疑问 我想创建一个 div 单击按钮即可关闭 按钮发生变化 当我再次单击此按钮时 div 将再次打开 问题是 当我单击按钮时 div 关闭并且按钮的类发生变化 这很好 但现在 当我单击新类的按
  • fread EOF 而不是分隔符

    我正在尝试用 fread 读取一个大文件 但我猜文件的布局有些混乱 如果我尝试读取文件 data fread input data txt sep t 在此文件上 我只是选择了有错误的行以及前后的一些内容 ID imdbID Title Y
  • 用 Python 封装旧版 Fortran。使用 setuptools 和 numpy.distutils 可以吗?

    我正在尝试为我的领域中一些流行的 Fortran 代码制作一个 python 包发行版 我希望它使用最标准的方法setup py文件 相关问题对学习有帮助如何包装 Fortran 扩展 https stackoverflow com que
  • 如何在新版Android Studio中添加classpath

    我将 android studio 版本更新为 bumblebee 版本 现在我想将导航组件添加到我的项目中 我想将类路径添加到 gradle 但是这个文件 gradle 已更改 我不知道如何添加它 我想添加这个 classpath and
  • 如何使用 Node.js 中的本机 Promise 全局处理异常?

    我知道怎么做处理承诺中的特定错误 https stackoverflow com questions 21800010 how do i handle errors with promises但有时我的代码片段看起来像这样 someProm
  • jquery ui - 模式对话框(创建模式内容的更好方法?)

    有没有办法在 JavaScript 中定义模式内容 而不是总是必须在页面上有一个元素并从中创建对话框 它有标题选项 因此我可以 动态 创建模态标题 但实际内容呢 就像说我需要它说 你要删除图像 539 而不是为每个可能的图像创建一个模式 或
  • NoSQL - MongoDB 与 CouchDB [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于 NoSQL 运动 我完全是个菜鸟 我听说过很多关于 MongoDB 和 CouchDB 的事情 我知道两者之间存在差异 作为进入 NoSQ
  • 在 cakephp 2.0 中运行插件的 shell

    我创建了一个新的 CakePHP 2 0 应用程序 并且想要运行插件的 shell
  • 抛出异常还是阻止异常?

    问题是是否更愿意Throw an exception或防止其发生 这是一个游戏项目 IndexOutOfBoundsException与围绕它进行编码相比 我有一个List