Qui*_*ncy 16 c# exception-handling try-catch-finally
try {
if (isFileDownloaded)
//do stuff
else
throw new CustomException()
}
catch (Exception e)
{
// something went wrong save error to log
}
finally
{
//release resources
}
Run Code Online (Sandbox Code Playgroud)
我的问题是catch
抓住ApplicationException
try块中抛出的东西吗?是编码风格差吗?它应该用另一种方式写吗?
Ree*_*sey 24
该catch
会赶上你的异常(和出现的任何其他).话虽这么说,我尽量避免在可能的情况下编写这样的代码.
就个人而言,我认为没有理由对同一范围内抛出的异常进行异常处理(catch).如果您可以在方法中处理错误 - 也将异常处理(即:logging)直接放在try块中.
使用a catch
更有用,IMO,用于捕获try
块中方法抛出的异常.这将更有用,例如,如果您的// do stuff
部分碰巧调用引发异常的方法.
此外,我建议不要捕获每个异常(Exception e
),而是可以正确处理的特定类型的异常.这种情况的一个例外是,如果您在捕获中重新抛出异常 - 即:将其用于记录目的但仍然让它冒出调用堆栈.
是的,它会ApplicationException
从中获取Exception
.
在大多数情况下处理基本异常应该没问题,除非你需要记录或做一些不同类型的异常 ...
try{
if (isFileDownloaded)
//do stuff
else
throw new ApplicationException();
}
catch(ApplicationException ae)
{
// log it application exception here...
}
catch(Exception ex)
{
// log all other exceptions here...
}
finally
{
// release resources...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44356 次 |
最近记录: |