Java 如何使用投掷?

Java 如何使用投掷?,java,exception,throws,Java,Exception,Throws,我正在学习Java,遇到了throws关键字。我开始知道它是用于我们不能处理或不习惯处理的异常 为什么我们不能只使用exception.printstacktrace?或者有没有任何情况下,抛出可以执行自动异常处理,或者仅仅是一个关键字让读者知道该方法可以抛出该异常?当您声明您的方法抛出一些checkedException时,您需要方法的用户来处理该异常(或者如果无法处理,则声明自己抛出)。这是方法契约的一部分。如果方法未处理选中的异常,则该方法必须使用throws关键字声明。throws关键字

我正在学习Java,遇到了
throws
关键字。我开始知道它是用于我们不能处理或不习惯处理的异常


为什么我们不能只使用
exception.printstacktrace
?或者有没有任何情况下,
抛出
可以执行自动异常处理,或者仅仅是一个关键字让读者知道该方法可以抛出该异常?

当您声明您的方法
抛出一些checkedException
时,您需要方法的用户来处理该异常(或者如果无法处理,则声明自己抛出)。这是方法契约的一部分。

如果方法未处理选中的异常,则该方法必须使用throws关键字声明。throws关键字显示在方法签名的末尾

通过使用throw关键字,您可以抛出异常,无论是新实例化的异常还是刚刚捕获的异常。请尝试了解throw和throw关键字中的不同内容。
“throws”不执行任何异常处理,它只是告诉调用方方法将异常处理委托给调用方方法,因为它在被调用的方法中没有这样做

exception.printStackTrace() 

只有捕获到异常时才能打印堆栈跟踪。java基本上遵循规则抛出或处理已检查的异常。处理异常就是捕获它们。 还请记住,在某些情况下,您必须始终处理异常,但您可以自由选择要在应用程序流中处理的位置。
“throws”不执行任何异常处理,它只是告诉调用方将异常处理委托给调用方方法,因为它在被调用的方法中没有这样做。因此,被调用的方法知道它必须处理或再次抛出异常(但正如前面所说的,必须在某些地方处理它)


PS:printstacktrace被认为是不好的,这是非常好的实用方法

如果您正在处理企业应用程序,并且任何异常都出现在中间层,那么这些异常需要传播到控制器,这是throws关键字的一个实际示例


在此类应用程序中,我们在控制器中编写导航逻辑,并处理日志记录,因此有必要将异常消息传播到控制器层。

不想处理?永远不会发生,您必须处理异常。但当您抛出异常时,这意味着您不想处理此异常n此函数,您希望在另一个地方处理此问题。

实际使用取决于用户的要求

假设我开发了一个API,它有一个方法
animateImages(InputStream image)
现在,如果传递了一个有效的图像,这个方法就可以正常工作,但是如果你将一个PDF传递给这个方法,这个方法就会失败

因此,如果我要处理异常,我只需放置一个
stackTrace()
,并记录错误,但这对您没有用处

我想让你知道原因,并作出相应的反应,发送有效的图像文件或任何你想做的事情


这就是为什么我们通常在希望使用者处理异常时抛出异常。

您阅读了吗?选中的异常和
抛出
用于您通常应该处理链上更高层的异常,或者用于记录您方法的用户应该准备处理的异常。
exception.getMessage()