Java正确处理异常

2023-11-29

对JAVA或异常处理不太熟悉。寻求一些关于什么是可以接受的、什么是不受欢迎的建议。

该场景,我正在构建一个生命游戏程序,我设置了条件来检查单元格是否超出范围,并且不尝试访问该“单元格”。我的问题是,使用 try catch 块代替 8 个条件是否可以接受,并且如果抛出 arrayOutOfBounds 异常则什么也不做。即忽略越界的单元格,或者这是不好的做法?例如...

try{
    neighbors += cellIsAlive(row, col);
}catch(ArrayIndexOutofBoundsException e)
{
    //dont do anything and continue counting neighbors
}

在这种情况下,cellIsAlive 方法检查多维数组中的位置,如果它还活着则返回 1,否则返回 0 并抛出 ArrayIndexOutofBoundsException。

以这种方式使用异常是个好主意还是不好的做法?

提前感谢您的任何意见。


这绝对是一个不好的做法。异常处理会消耗大量资源,并且应该仅在异常情况下使用(顾名思义)。

看看本书的第 9 章(如果可以的话,也可以阅读其余部分):

http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683/

您会发现您想要做的事情与用于说明您不应该做的事情的示例非常相似,我引用:

有一天,如果你运气不好,你可能会偶然发现一段代码 看起来像这样:

// Horrible abuse of exceptions. Don't ever do this!
try {
    int i = 0;
    while(true)
        range[i++].climb();
} catch(ArrayIndexOutOfBoundsException e) {
}

这段代码有什么作用?从检查来看根本不明显,并且 这就是不使用它的充分理由(第 55 条)。原来是一个 循环遍历一个元素的构思非常糟糕的习惯用法 大批。

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

Java正确处理异常 的相关文章

随机推荐

  • 为什么 Chrome 在反复刷新使用 WebAssembly 的页面后最终会抛出“内存不足:wasm 内存”?

    我愿意相信刷新浏览器窗口或选项卡不会泄漏 不幸的是 当涉及 WebAssembly 时 情况似乎并非如此 我用 Rust 构建了一个 WebAssembly 箱 该包的编译大小约为 360 Kb 内容压缩之前 并且该包在 Firefox 甚
  • 这是将训练集投影到特征空间的正确方法吗? MATLAB

    我使用以下方法计算了 PCA function signals V pca2 data M N size data data reshape data M N 1 subtract off the mean for each dimensi
  • 将文本在 div 中垂直和水平居中

    我正在使用 bootstrap 并尝试创建一个高度和宽度与其宿主容器相同的 Cell 标题占该空间的 30 值占该空间的 70 该值有上限和下限 各占 20 为实际值留出 60 的空间 HTML div class container fl
  • Excel VBA退出Word文档

    我有一个宏 可以将 Excel 文档的选定单元格插入到 Word 模板中 复制整个 Word 文档 然后关闭文档而不保存 以保留某些关键字 但是 当它关闭 Word 文档时 它会打开一个空白的 Word 窗口 其中没有活动文档 并且每次运行
  • Django 模板和 MongoDB _id

    Variables and attributes may not begin with underscores value id 如何引用 idDjango 模板中从 MongoDB 获取的项目的数量 自定义模板过滤器有助于 from dj
  • jquery:.css 与附加到头部之间的速度差异?

    我们对内部应用程序有一些笨拙的解决方法 我想知道哪种 jQuery css 技术被认为更快 更高效 等等 技术A使用 css doc css margin top 90px checkouthelp css margin 50px 50px
  • 了解 Python 中的 for 循环

    我正在尝试创建一个for循环 我遇到了问题 我不明白这些循环是如何工作的 我认为问题是因为我正在使用for语法错误 据我了解 一个for循环应该看起来像 for w in words print w len w But 它究竟是如何运作的
  • 将 PHP Unix 时间戳转换为 Javascript 时间戳格式

    我将 php 中的 unix 时间戳抛出到 javascript 中 我注意到 PHP 和 Javascript 时间戳与纪元不同 秒与毫秒 我基本上所做的就是回显 php unix 时间 然后添加 3 个零 简单地将其乘以 1000 但我
  • Excel UDF 到表中的数据块的逆透视(融化、反向透视、展平、标准化)

    这个问题将寻求多种方法LET LAMBDA VBA UDF and Power Query Function 因此不会有单一的正确答案 而是征集可供参考的方法 Scott提出了一个问题here关于反转包含数据块而不是单个数据点的复杂表 基本
  • 无法在 Angular 6 中添加 Bootstrap 4

    当我尝试添加最新的引导程序版本时遇到问题 npm install bootstrap 之后 当我尝试运行它时收到一条错误消息 ng serve open 我在 angular json 中添加 Bootstrap 像这样 styles no
  • Xamarin Forms PopAsync 崩溃

    我用 PCL 构建了一个 Xamarin 表单应用程序 应用程序有时会崩溃await Navigation PopAsync 我找到了这个https forums xamarin com discussion 62414 app resum
  • 通过分隔符将 T-SQL 字符串拆分为列?

    我有一个表 其中有一列使用连字符分隔的八个值集 其中一些为空白 我试图将此字符串拆分为列 每个值对应于分隔字符串的位置 Table1 Record StringValue rec1 422100 130 1034 10901 12000 r
  • 如何查看活动的 SQL Server 连接?

    我正在使用 SQL Server 2008 Enterprise 我想查看任何活动的 SQL Server 连接 以及所有连接的相关信息 例如来自哪个 IP 地址 连接到哪个数据库等等 是否有现有的命令可以解决这个问题 SELECT DB
  • 如何使用分类轴在条形图上叠加数据点

    Goal 我正在尝试使用 Seaborn 在带有多个分组条形图的图中显示各个数据点 Problem 我尝试使用条形图的猫图和各个数据点的猫图来完成此操作 但是 这会生成 2 个数字 一个包含条形图 另一个包含各个数据点 问题 有没有办法使用
  • 如何制作非矩形Winform?

    我正在使用下面的代码来更改 winform 的形状 它正在改变形状 但不是我想要的那样 我需要表格有弯角 我应该使用什么积分来获得它 public void MakeNonRectangularForm var p new Graphics
  • ms-access加载数据问题

    我有一个非常复杂的表格 如下所示 替代文本http img9 imageshack us img9 2465 test2xk jpg 然而 我的数据库中总共只有 8MB 的数据 它的工作方式是用所有记录名称一直填充左侧的列表框 当您滚动记录
  • 使用 SCALER_CROP_REGION 裁剪时 Camera2 预览会拉伸

    我想在以下位置显示预览全屏使用camera2 API 我选择的相机尺寸是4160x3120 16 9 我的屏幕是1080x1920 9 16 因此 如果我希望预览正确缩放 我必须裁剪相机输出 Rect zoomCrop new Rect 0
  • C4 保存图像的一部分

    嘿 我浏览了保存图像的示例 然后我只想保存屏幕的一部分 我设法保存从图像左上角开始的部分 但实际上我想保存屏幕的中心 仅保存图像的一部分的神奇之处在于设置具有特定大小的图形上下文 如下所示 UIGraphicsBeginImageConte
  • 从绑定项获取 ItemsControl 内的 DataGrid

    我有一个 ItemsControl 在其模板中使用 DataGrid 如下所示
  • Java正确处理异常

    对JAVA或异常处理不太熟悉 寻求一些关于什么是可以接受的 什么是不受欢迎的建议 该场景 我正在构建一个生命游戏程序 我设置了条件来检查单元格是否超出范围 并且不尝试访问该 单元格 我的问题是 使用 try catch 块代替 8 个条件是