Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java方法引发异常_Java_Exception Handling - Fatal编程技术网

Java方法引发异常

Java方法引发异常,java,exception-handling,Java,Exception Handling,我有一个java方法,它可以有效地抛出多个未检查的异常。我的问题是:我是否需要声明它来抛出所有异常,或者如果我只声明抛出异常,是否有任何问题 方法1: public void myMethod() throws Exception1,Exception2,Exception3,Exception4,Exception5 {} 我可以这样声明而不是方法1吗 public void myMethod() throws Exception {} 是的,您可以,但理想情况下,人们会选择一种特定类型的

我有一个java方法,它可以有效地抛出多个未检查的异常。我的问题是:我是否需要声明它来抛出所有异常,或者如果我只声明
抛出异常
,是否有任何问题

方法1:

public void myMethod() throws Exception1,Exception2,Exception3,Exception4,Exception5
{}
我可以这样声明而不是方法1吗

public void myMethod() throws Exception
{}

是的,您可以,但理想情况下,人们会选择一种特定类型的异常,以便您知道该代码块具有哪种类型的“异常”行为。例外是超类,其他的是子类。如果您有未检查的异常,即您的代码不存在可归类为“未检查”异常行为的行为,则可以使用
异常
类。但除此之外,您需要选中上面提到的
项(可能不是全部)

如果您不了解不同类型的异常的作用-请尝试阅读以下内容-

这将解释不同的异常以及如何在应用程序中使用它们:)


另外,对于未经检查的异常,不需要在方法签名中使用
throws
,但使用它可能不会造成任何伤害-至少你让人们知道你有一个可能由此代码引发的“异常”:[我很高兴为此受到批评]

是的,你可以定义。但是,方法调用方将丢失一些有关抛出异常的信息。最佳实践是抛出特定的异常并进行特定的处理。

您始终可以抛出根异常。如果您的
Exception1、Exception2、Exception3、Exception4、Exception5
都在其传统树中的某个位置扩展了相同的异常,则可以抛出此基本异常


请注意,异常可能具有某种意义,即显示可能出现的错误(并给出处理该错误的提示)。如果其他开发人员必须处理您的方法,这一点尤其重要。

如果异常来自另一个功能区域或不在您的控制范围内,我会处理它们(通过日志记录、回滚、清理资源等),并将它们包装在我自己的()中并抛出

如果您的方法只抛出
未检查的异常
,则不需要任何throws子句。+1,同时捕获也适用相同的原则。永远不要捕获直接的
异常
,它是所有异常中的超级异常。始终捕获特定的子类异常。