在Python中,有一个有用的异常处理代码:
try:
# Code that could raise an exception
except Exception:
# Exception handling
else:
# Code to execute if the try block DID NOT fail
Run Code Online (Sandbox Code Playgroud)
我认为能够将可能引发的代码与普通代码分开是很有用的.在Python中,这可能如上所示,但是我在C#中找不到类似的东西.
假设该特征或类似特征不存在,将标准代码放入try块中或块之后是标准做法catch吗?
我问的原因是因为我有以下代码:
if (!IsReadOnly)
{
T newobj;
try
{
newobj = DataPortal.Update<T>(this);
List<string> keys = new List<string>(BasicProperties.Keys);
foreach (string key in keys)
{
BasicProperties[key] = newobj.BasicProperties[key];
}
}
catch (DataPortalException)
{
// TODO: Implement DataPortal.Update<T>() recovery mechanism
}
}
Run Code Online (Sandbox Code Playgroud)
这需要普通代码在try块中,否则如果引发异常并随后处理,newobj则会被取消分配,但是在try块中有这么多代码并且与之无关,这感觉非常不自然DataPortalException.该怎么办?
谢谢