gpt4 book ai didi

java - Java 中异常的 throws 关键字

转载 作者:IT老高 更新时间:2023-10-28 20:21:56 24 4
gpt4 key购买 nike

当你这样做时:

public class Blah {

public void doBlah() throws BlahException {

}

}

添加 throws BlahException 的真正作用是什么?

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

最佳答案

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

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

它没有说明 NullPointException 或错误等未经检查的异常。那些总是可以抛出的。 throws 子句中不需要它们。

这段代码展示了它是如何工作的:

ExceptionDemo.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");
}
}

CheckedException.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);
}
}

关于java - Java 中异常的 throws 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1989077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com