我正在编写程序,在编码的一个点上,我有代码会生成异常每次,我需要这样做。
在其他意义上,我希望使用 catch 阻止尝试阻止。
我想知道这种编码可能会在Apllication中产生问题(将来部署后),因为总会发生异常?
有害吗?
try{
//throws exception every time
}
catch(Exception e)
{
//coding//Important part of code
}
我有其他解决方案,但我想知道的是由此类代码引起的问题。
我同意这是错的,但我的问题是这可以创造什么问题?
答案 0 :(得分:1)
你要做的是无限错!!!因为你还没有发布任何细节,我假设你抛出了不同的异常,然后根据抛出异常的类型做了一些事情。
更好的方法是返回一个值(可能是enum
)并根据它的值而不是抛出的异常的类型进行处理。当然有更好的方法解决这个问题,但除非你提供更多关于你要做什么的详细信息,否则我不能说任何具体的事情。
只应在例外案例中使用Eceptions,因为:
switch
相比,例外情况较慢答案 1 :(得分:1)
可以造成问题吗?简单的答案是它已经是一个。如果你的代码每次都抛出一个Exception
,那么为什么不完全摆脱try
- catch
呢?我非常怀疑你的代码在try块中做了什么不能以任何其他方式构造。正如@ user16547所提到的,例外应该是例外。它们不是用作应用程序逻辑的组成部分,也不是变态goto
。具体原因不这样做:
投掷Exception
代价很高,如果这是性能关键代码,您将严重损害您的应用程序。
这会伤害可读性,因为大多数人都不希望您的代码以这种方式构建。
捕获常规Exception
类通常是一个坏主意,因为这只会进一步模糊代码,并掩盖其他潜在错误。请考虑您的代码的某些部分在try
块中未能达到预期。它仍然会恢复到捕获状态,并可能导致整个应用程序崩溃!
如果没有看到您的实际代码,很难确定您所做的事情是否合理。但是,作为一般规则,这不是一种好的做法,并且不利于性能,可读性和可靠性。