Java 中抛出异常

2023-11-24

我有一个关于在 Java 中抛出异常的问题,这似乎是我这边的一种误解,我想自己澄清一下。

我一直在读到处理异常代码的两种基本方法是:

1.) 在 try 块中使用“throw new ...”抛出异常,并立即在 catch 块中捕获它 - 所谓的 try-throw-catch 机制。

2.) 在方法中使用“throw new ...”抛出异常,然后在方法的标头中使用“throws ...”声明该方法可能会抛出异常 - 所谓的“pass-the-buck”。

我最近读到“抛出异常然后用相同的方法捕获它没有任何意义”,这让我思考是否我以错误的方式理解了这件事,或者写这个的人有什么东西其他的在心里。第一种处理异常的方法不正是这样做的吗(try-throw-catch 机制)?我的意思是,它抛出一个异常并用相同的方法捕获它。我读到,在一个方法中抛出异常并在另一种方法中捕获它是一种更好的做法,但这只是一种(可能更好)的方法。另一种方式也是合法、正确的,不是吗?

请您对此发表评论好吗?非常感谢。


当方法无法自行解决异常时,应该从该方法引发异常。

例如,一个FileNotFoundException被抛出new FileInputStream(new File(filename))因为FileInputStream本身无法处理文件丢失的情况;需要抛出该异常,以便最终用户应用程序可以处理该问题。

在某些情况下,可以在方法内处理异常。例如,文档模型方法抛出BadLocationException可以用足够智能的方法来处理。根据问题的不同,可以处理异常或重新引发异常。

(无论如何,我认为从 try-catch 块中抛出异常以便执行 catch 块代表了非常糟糕的逻辑流程)

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

Java 中抛出异常 的相关文章

随机推荐

  • 为什么渐变不覆盖视图的整个宽度

    我正在尝试将渐变应用于限制在主屏幕的顶部 左侧和右侧的视图 但由于某种原因 渐变没有覆盖所应用视图的整个宽度 请参见中的黄色 图片 class ViewController UIViewController IBOutlet weak va
  • C++编译器会优化掉未使用的返回值吗?

    如果我有一个返回对象的函数 但调用者从未使用此返回值 编译器会优化掉副本吗 可能是总是 有时 从不的答案 基本示例 ReturnValue MyClass FunctionThatAltersMembersAndNeverFails Do
  • 使用文本框和自定义词典进行拼写会减慢我在 C# WPF 中的应用程序的速度

    我在 WinForm 应用程序中使用 WPF 文本框进行拼写检查 每次创建一个文件时 我都会将相同的文件作为 CustomDictionary 加载 直到最近一切都很好 现在 它们需要很长时间才能加载 最多一秒钟 有些表格有 30 个或更多
  • 如何强制 Facebook JS-SDK 渲染动态添加的小部件?

    应用程序内的内容正在使用 XHR 进行更新 这涉及到更改评论框的 URL div class fb comments div 页面完全加载后创建新的 Facebook 小部件占位符时 如何请求 Facebook JS SDK 在页面上呈现新
  • 如何使用最小起订量模拟控制器上下文

    我正在尝试最小起订量框架 但现在我遇到了障碍 以下单元测试失败 因为 ViewName 属性的实际值是空字符串 有人能指出我正确的方向吗 为什么这没有通过测试 TestMethod public void Can Navigate To A
  • 在 xUnit.net 中的所有测试之前和之后运行代码一次

    TL DR 我正在寻找 xUnit 的 MSTest 等效项AssemblyInitialize 又名我喜欢的唯一功能 具体来说 我正在寻找它 因为我有一些硒烟雾测试 我希望能够在没有其他依赖项的情况下运行这些测试 我有一个 Fixture
  • Oracle 存储过程、SYS_REFCURSOR 和 NHibernate

    我正在连接一个旧版 Oracle 10 2g 数据库 我想使用 NHibernate 2 0 1 从存储过程返回对象 相关存储过程使用 SYS REFCURSOR 返回结果 根据文档这应该是可行的 但我找到了few posts互联网上另有建
  • 我应该使用什么 JavaScript 库来解析 URL 参数?

    如何解析 JavaScript 中的 URL 参数 这些参数我通常会称为 GET 参数或 CGI 参数 但在这种情况下 页面基本上是提交给自身 而不是服务器 因此没有 GET 请求 也绝对没有 CGI 程序 我在网上看到了许多可以复制的例程
  • Angular 2 http 服务。获取详细的错误信息

    对离线服务器执行 Angular2 http 调用并不会在我在 Observable 的 catch error 运算符或订阅错误委托中获取的 错误响应 对象中提供太多信息 它们实际上都共享相同的信息 但正如您在控制台的屏幕截图中看到的那样
  • 如何在 Windows 应用商店应用程序中使用 C# 计算大文件的哈希值(MD5 或 SHA)

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 PROBLEM 如果您尝试在 Windows 8 Metro 应用程序中使用 HashD
  • 异步函数返回 Promise { }?

    我有以下异步函数 async function readFile let content await new Promise resolve reject gt fs readFile file txt function err conte
  • cv2.videoCapture.release() 的含义是什么?

    我正在使用树莓派来捕获视频的前 20 帧 现在这更多的是一个概念问题 但是在浏览有关 videoCapture 的 openCV 文档时 他们强调了在此代码中释放捕获的重要性 如其网站上发布的 import numpy as np impo
  • 如何在 ASP.NET Core 2.2 中使用来自不同托管项目的共享 SignalR Hub

    我正在处理一个使用 ASP NET Core 2 2 构建的项目 主要解决方案包含多个项目 其中包括API Web和其他类库 我们使用 SignalR 来显示 API 项目和 Web 项目之间的共享消息 通知 例如 从 API 添加新员工记
  • SMLoginItemSetEnabled 有时会默默地无法启动沙盒 UI 帮助程序

    我有一个沙盒应用程序 其中包含一个呈现一些 UI 的帮助程序 作为全屏窗口 但也可以是状态项或类似项 这在大多数情况下都有效 但有时却并非如此 它只是默默地无法启动助手 由于助手有 UI 我使用SMLoginItemSetEnabled加载
  • Google Cloud Vision API:“请求的身份验证范围不足。”

    你好 我正在尝试使用谷歌的云视觉 API 特别是这个例子 https cloud google com vision docs label tutorial label tutorial 1 我按照这个教程进行操作 https cloud
  • 在 Three.js 中创建 2 点之间的样条曲线

    我正在尝试使用 Three js 将点与样条线链接起来 以实现我想要制作的可视化效果 据我所知 我将点添加到数组中 将其传递给 THREE SplineCurve3 逐步遍历样条线点以获取几何坐标并进行渲染 如果我只将起点 终点添加到数组中
  • Html.HiddenFor 是做什么的?

    虽然我已经阅读了 Html HiddenFor 的文档 但我还没有掌握它的用途 有人可以解释它的用途并举一个简短的例子吗 这些助手应该放在代码中的哪里 它在表单上为您传递的字段 来自模型 创建隐藏输入 对于模型 视图模型中需要保留在页面上并
  • VSTS 中 Android 应用程序的 Gradle 构建在内存不足后失败

    我在 VSTS 中有一个 gradle 构建 正在构建 Android 应用程序 但它失败并出现以下错误 构建机器真的只有很少的内存吗 还是我应该更改一些设置gradle properties 例如这org gradle jvmargs设置
  • WebBrowser DocumentCompleted 事件多次触发

    我一直在研究这个东西 每个人似乎都同意解决方案是检查ReadyState直到设置为 完成 但实际上该事件有时会被触发ReadyState多次设置为 完成 我认为对于那个蹩脚的 NET WebBrowser 没有解决方案 但如果我使用底层 D
  • Java 中抛出异常

    我有一个关于在 Java 中抛出异常的问题 这似乎是我这边的一种误解 我想自己澄清一下 我一直在读到处理异常代码的两种基本方法是 1 在 try 块中使用 throw new 抛出异常 并立即在 catch 块中捕获它 所谓的 try th