Java 中异常的 throws 关键字

2023-12-24

当你这样做时:

public class Blah {

    public void doBlah() throws BlahException {

    }

}

添加什么是throws BlahException真的吗?

它基本上是否将任何例外归为一类?即如果有异常,无论是什么,总是会使用抛出BlahException?


它告诉类的客户端 DoBlah 方法可以抛出 BlahException 或任何其他扩展它的异常.

如果是受检查的异常,编译器将要求将对此方法的调用包装在 try/catch 块中。如果未选中,他们可以选择不捕获异常,但他们必须意识到,如果不这样做,它将在调用堆栈中进一步向上冒泡。

它没有说明任何有关 NullPointException 或错误等未经检查的异常的信息。这些也可以随时抛出。 throws 子句中不需要它们。

此代码显示了它的工作原理:

异常演示.java:

package exceptions;

public class ExceptionDemo
{
    public static void main(String[] args)
    {
        ExceptionDemo demo = new ExceptionDemo();

        try
        {
            // Removing the try/catch will result in a compilation error
            demo.doChecked();            
        }
        catch (CheckedException e)
        {
            e.printStackTrace();
        }

        // Note: Not inside a try/catch, in spite of the throws clause
        demo.doUnchecked();
    }

    public void doChecked() throws CheckedException
    {
        System.out.println("doing something that may throw a checked exception");
    }

    // Note: "throws" clause is unnecessary for an unchecked exception
    public void doUnchecked() throws UncheckedException
    {
        System.out.println("doing something that may throw an unchecked exception");
    }
}

检查异常.java:

package exceptions;

public class CheckedException extends Exception
{
    public CheckedException()
    {
        super();
    }

    public CheckedException(String message)
    {
        super(message);
    }

    public CheckedException(String message, Throwable cause)
    {
        super(message, cause);
    }

    public CheckedException(Throwable cause)
    {
        super(cause);
    }
}

UncheckedException.java:

package exceptions;

public class UncheckedException extends RuntimeException
{
    public UncheckedException()
    {
        super();
    }

    public UncheckedException(String message)
    {
        super(message);
    }

    public UncheckedException(String message, Throwable cause)
    {
        super(message, cause);
    }

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

Java 中异常的 throws 关键字 的相关文章

随机推荐

  • 在 wxPython 中进行拖放的 OLE 方式

    我有一个在 MS Windows 上运行的 wxPython 应用程序 我希望它支持其实例之间的拖放 因此用户打开我的应用程序 3 次并将数据从一个实例拖到另一个实例 wxPython 中的简单拖放是这样工作的 用户发起拖动 源窗口将必要的
  • 是否有 R 函数用于选择以特定字符结尾的单词?

    我是一个困惑的语言学家 试图使用 R 从 Twitter 收集数据 我一直在使用 twitteR 包 它在固定字符串上运行得很好 但我想要求它获取包含 querendo 不定式动词 的推文 在葡萄牙语中 不定式动词总是以字符 r 结尾 如何
  • 如何在 git 中重新排序最后两次提交?

    我想重新排序 git 中的最后两次提交 现在我有 git log oneline 4 1e0ecba HEAD my branch Fix for T255 82d45dc django extensions af3953b improve
  • 从 C# Web API 方法中创建 Office365 邮箱

    Context 我有一个由 ASP NET MVC 应用程序调用的 ASP NET Web API 应用程序 在 Web API 中 我有一个方法需要创建 Office365 邮箱以及其他内容 创建文件夹 创建联系人 创建签名等 该邮箱的创
  • 如何使用凸轮四元数计算物体相对于相机的方位角和仰角......?

    我有一个相机四元数 a b c d 和一个凸轮位置 camX camY camZ 我有一个具有 3d 坐标 x y z 的对象 我需要计算物体相对于凸轮视图方向和平面的方位角 仰角 第一个问题 如果我把物体放在我的视野中心 如果我旋转凸轮
  • 如何使用 Windows 窗体在窗口标题栏中绘制自定义按钮?

    如何在窗体标题栏中的最小化 最大化和关闭按钮旁边绘制自定义按钮 我知道您需要使用 Win32 API 调用并重写 WndProc 过程 但我一直无法找到正确的解决方案 有谁知道如何做到这一点 更具体地说 有谁知道在 Vista 中可行的方法
  • GEdit/Python 执行插件?

    我刚刚开始使用 GEdit 和各种插件作为我的 IDE 来学习 python Visual Studio F 具有允许在代码窗口中突出显示一段文本的功能 然后按一下按键即可在 F 控制台中执行该文本 是否有类似的工具 插件可以为 GEdit
  • C# - user32.dll - GetWindowRect 问题

    DllImport user32 dll return MarshalAs UnmanagedType Bool static extern bool GetWindowRect HandleRef hWnd out RECT lpRect
  • 如何重置 Xcode 4 快捷键

    如何将 Xcode 4 快捷键重置为默认值 Xcode gt 性能 gt 键绑定 我发现我设置有问题 但找不到重置为原始设置的方法 我该怎么做 重新安装 Xcode 4 只需单击 即可添加新命令集并选择Default not Duplica
  • angular2使用HTTP发布XML类型请求数据

    我可以通过以下方式将 JSON 请求数据发布到服务器 但是如何使用 http xml 将 XML 结构化数据发布到服务器 getAuthSeed value let params validateUsr false let headers
  • ScalaTest 测试名称没有固定装置?

    首先 我看到了它并且这另一篇文章 https stackoverflow com questions 14831246 access scalatest test name from inside test听起来和我需要的一模一样 除了一件
  • 轻量级 C++ Gui 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 Windows 上使用 C 创建 GUI 应用程序 我已经下载了Qt 它运行得很好 但是它里面有
  • 是否可以将 TextMate 主题导入 IntelliJ IDEA?

    有什么方法可以自动将 TextMate 主题导入 IntelliJ IDEA 例如这两种格式之间的转换器 Please 检查转换器 https github com JetBrains colorSchemeTool由 JetBrains
  • 为什么/何时应该使用 static 声明变量?

    我没有 C C 背景 在使用其他语言之后 我刚刚开始学习 Objective C 在什么情况下我应该使用变量的静态声明而不是常规的 ivars 或属性 这样做我能得到什么 thanks 全局变量和函数 默认情况下 导出所有符号 全局变量和函
  • React-Native 通过代理获取

    我如何设置选项fetchReact Native 的方法通过代理调用网络服务器 目前我正在使用axios https github com mzabriskie axios但这行不通 在获取中添加主机标头后 我可以通过 charles pr
  • 龙卷风发送有关事件的消息

    我用 Python 创建一个程序 以未知的时间间隔读取数据流 该程序还通过 websocket 发送此数据 该程序是服务器 它将接收到的数据发送给客户端 这是现在服务器的代码 class WebSocketHandler tornado w
  • 如何实现“真正的”异步

    在他的回答中这个问题 https stackoverflow com questions 27790468 is it possible to await an io operation that is not declared as as
  • 出于 CSS 目的将电视检测为客户端浏览器的所有可能方法

    我有遵循响应式网页设计技术的网络应用程序 我想提供不同 更大 的字体大小TV和不同的 较小的 screen即使两者具有相同的分辨率 为什么 因为当用户使用 32 英寸显示器作为屏幕时 他可能比将其用作电视的用户坐得更近 代码 body fo
  • 未实现的功能:WINDOW/ORDER BY

    我正在使用嵌入式 Apache Derby 数据库并执行以下查询 SELECT someUniqueValue row number over ORDER BY someUniqueValue as ROWID FROM myTable s
  • Java 中异常的 throws 关键字

    当你这样做时 public class Blah public void doBlah throws BlahException 添加什么是throws BlahException真的吗 它基本上是否将任何例外归为一类 即如果有异常 无论是