java应用程序中的异常处理

java应用程序中的异常处理,java,exception,exception-handling,Java,Exception,Exception Handling,我将在我的应用程序中实现异常处理。我该多小心啊。请指出 我的策略: 我正在创建用户定义的异常类。它应该扩展RuntimeException还是Exception 然后我想从每个catch块抛出我的异常,然后在我的类中决定该异常类型的实例是什么。在此基础上,我将宣布其类型的严重性,如致命的关键 两者之间的区别: public class MyException extends RuntimeException{ } public class MyException extends Except

我将在我的应用程序中实现异常处理。我该多小心啊。请指出

我的策略: 我正在创建用户定义的异常类。它应该扩展RuntimeException还是Exception

然后我想从每个catch块抛出我的异常,然后在我的类中决定该异常类型的实例是什么。在此基础上,我将宣布其类型的严重性,如致命的关键

两者之间的区别:

public class MyException extends RuntimeException{

}

public class MyException extends Exception{

}
请阅读

扩展
RuntimeException
no的异常不需要
catch
块。异常扩展
Exception
需要一个
catch
块,因此我认为您希望扩展
Exception
并使用选中的异常。

请阅读相关内容

扩展
RuntimeException
no的异常不需要
catch
块。异常扩展
Exception
需要一个
catch
块,因此我认为您希望扩展
Exception
并使用选中的异常。

请阅读相关内容

扩展
RuntimeException
no的异常不需要
catch
块。异常扩展
Exception
需要一个
catch
块,因此我认为您希望扩展
Exception
并使用选中的异常。

请阅读相关内容


扩展
RuntimeException
no的异常不需要
catch
块。扩展
Exception
的异常需要一个
catch
块,因此我认为您希望扩展
Exception
并使用选中的异常。

这两个语句之间存在差异

当您执行
MyException扩展RuntimeException
时,它是未经检查的异常,因此您不必声明您的方法以
抛出一个异常

另一条语句是选中的异常,您必须声明使用它来抛出异常的方法

然后我想从每个catch块抛出我的异常


有理由这样做吗?这两种情况都没有意义。

这两种说法之间有区别

当您执行
MyException扩展RuntimeException
时,它是未经检查的异常,因此您不必声明您的方法以
抛出一个异常

另一条语句是选中的异常,您必须声明使用它来抛出异常的方法

然后我想从每个catch块抛出我的异常


有理由这样做吗?这两种情况都没有意义。

这两种说法之间有区别

当您执行
MyException扩展RuntimeException
时,它是未经检查的异常,因此您不必声明您的方法以
抛出一个异常

另一条语句是选中的异常,您必须声明使用它来抛出异常的方法

然后我想从每个catch块抛出我的异常


有理由这样做吗?这两种情况都没有意义。

这两种说法之间有区别

当您执行
MyException扩展RuntimeException
时,它是未经检查的异常,因此您不必声明您的方法以
抛出一个异常

另一条语句是选中的异常,您必须声明使用它来抛出异常的方法

然后我想从每个catch块抛出我的异常


有理由这样做吗?这两种情况都没有意义。

我认为您需要做的第一个区别是,您是否希望它像Java中的选中与未选中异常一样。如果您确实了解ArrayIndexOutOfBounds异常是如何发生的,以及SQL异常是如何发生的。 运行时异常通常是由于异常情况而发生的错误或缺陷


在您的情况下,我认为您不需要将其作为运行时异常,因为您将在代码中处理它

我认为您需要做的第一个区别是,您是否希望它像Java中的checked和unchecked异常一样。如果您确实了解ArrayIndexOutOfBounds异常是如何发生的,以及SQL异常是如何发生的。 运行时异常通常是由于异常情况而发生的错误或缺陷


在您的情况下,我认为您不需要将其作为运行时异常,因为您将在代码中处理它

我认为您需要做的第一个区别是,您是否希望它像Java中的checked和unchecked异常一样。如果您确实了解ArrayIndexOutOfBounds异常是如何发生的,以及SQL异常是如何发生的。 运行时异常通常是由于异常情况而发生的错误或缺陷


在您的情况下,我认为您不需要将其作为运行时异常,因为您将在代码中处理它

我认为您需要做的第一个区别是,您是否希望它像Java中的checked和unchecked异常一样。如果您确实了解ArrayIndexOutOfBounds异常是如何发生的,以及SQL异常是如何发生的。 运行时异常通常是由于异常情况而发生的错误或缺陷


在您的情况下,我认为您不需要将其作为运行时异常,因为您将在代码中处理它

然后我想从每个catch块抛出我的异常:为什么要这样做?这似乎是一个非常糟糕的主意。@JBNizet我已经回答了,但我正在删除,因为我也想知道这一点。我能想到的唯一合法的原因是分离第三方异常依赖项。例如,您正在编写应用程序A,它依赖于适配器B,适配器B依赖于第三方框架C、D和E。应用程序A应该与框架C、D和E解耦,以便它们能够