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 - Fatal编程技术网

按照java编码标准进行异常处理

按照java编码标准进行异常处理,java,Java,在异常处理的情况下,我有一个关于java标准的问题 代码段: public String methodXXX(){ //This method may throw IllegalArgumentexception and arrayoutofboundaryException. } 在这种情况下,哪一个是好的编码标准,请让我知道为什么 案例1: 案例2: public String methodXXX()throws Exception{ //This method may throw Ill

在异常处理的情况下,我有一个关于java标准的问题

代码段:

public String methodXXX(){
//This method may throw IllegalArgumentexception and arrayoutofboundaryException.
}
在这种情况下,哪一个是好的编码标准,请让我知道为什么 案例1:

案例2:

public String methodXXX()throws Exception{
//This method may throw IllegalArgumentexception and arrayoutofboundaryException.
}
我在这里提到案例2的原因是:我们可能不希望在运行时发生其他异常。 由于Exception是所有异常的父类,所以最好使用案例2??? 如果是,在哪些情况下案例1是可行的?
你能解释一下你的性能点吗?

声明方法抛出的特定异常总是更好的。这不仅使可能出现的问题更加明确,而且在必要时也使单独处理问题更加容易


实际上没有任何性能影响:为异常创建堆栈跟踪是一项非常昂贵的操作,它使所有其他考虑因素相形见绌。

两个异常都是
RuntimeException
子类,您不必在方法声明的
抛出部分显式声明它们


在Java中有两种异常:。正如链接中所解释的,每一个都在不同的情况下使用。所有属于
RuntimeException
子类的异常都是未检查的异常,通常不应该声明某个方法抛出它们。

通常,
RuntimeException
s如
IllegalArgumentException
ArrayIndexOutOfBoundsException
反映程序员错误,与最终程序应该知道如何在运行时处理的异常相反

通常,不值得显式声明
RuntimeException
s,因为响应此类异常的正确方法通常是抛出异常,因此运行程序的程序员知道存在需要修复的错误,并且可以获得堆栈跟踪。编写一个捕获
运行时异常的
try/catch
通常不是一个好主意,因此没有意义


对于其他类型的
Exception
s,您应该声明可能引发的特定异常,以便您的方法的用户可以单独捕获每个异常,并对每个特定异常类型编写不同的响应。仅仅声明您正在抛出
异常
就迫使您的方法的用户编写异常处理程序,因为他们对抛出的特定异常一无所知。我认为您不应该抛出异常,而应该将其放在java文档注释中。这样,api的用户就知道可能发生什么样的异常,而不是被迫捕获这些异常

/**
 * @throws IllegalArgumentexception
 * @throws ArrayoutofBoundaryException
 */
public String methodXXX() {
  //This method may throw IllegalArgumentexception and arrayoutofboundaryException.
}
我更喜欢运行时异常而不是检查异常,因为大多数情况下强制捕获异常不会有多大帮助。因此,将所有异常都放在java文档中可以清楚地显示,也不会强制捕获它。通过这种方式,代码更加清晰,默认情况下,异常传播到顶层的机会也就存在了。否则,我看到许多开发人员只是捕获检查过的异常,不做任何事情,让顶层不知道底层发生的任何异常


一般的规则是“如果用户可以从异常中恢复,则抛出选中的异常或文档运行时异常”,即使如此,我还是更喜欢后者,因为检查异常通常没有多大帮助。

抛出异常时始终要明确。这并不是说你不应该这样做,只是你不必这样做。如果在代码中显式地抛出它们,那么声明它们仍然是有用的信息。
/**
 * @throws IllegalArgumentexception
 * @throws ArrayoutofBoundaryException
 */
public String methodXXX() {
  //This method may throw IllegalArgumentexception and arrayoutofboundaryException.
}