对Err处理来说是全新的,但试图理解。
对于单个流程,我有这个:
try
{
myGetDataFunction();
}catch(SqlException ex){
myLogExceptionRoutine();
}catch{
throw;
}
我的下一步是查看我有多个顺序调用的情况。 例如。
public void foo(){
callA();
callB();
}
如果callA失败,我不希望调用callB。 问题是,我是否只包括A& B在单个try / catch中,还是每个单独的try / catch? ..并且随之而来的是,我试图理解关于这一切的“原因”。
那么这样吗?
try{
callA();
callB();
}catch{
// handling stuff
}
或者喜欢这个奇怪的伪代码,它看起来不正确?
try{
callA();
}catch{
// handle error
}
if(somevalidityCheck){
try{
callB();
}catch{
// handle error
}
}
答案 0 :(得分:1)
首先用C#标准括号在新行上用{}写它。 :)这里没有java !!
您的示例是一种完全可以接受的方式来编写您的异常,假设它能够做您想要的。
try
{
callA();
callB();
}
catch
{
// Handle A or B exception. Do you need to know specific details about what A or B is doing?
}
如果您需要有关日志记录异常的更多详细信息,那么在CallA或B中捕获异常会很有用,记录必要的详细信息然后抛出异常。
如果每个人都在try / catch中包装每个方法,那么代码会变得非常混乱。
答案 1 :(得分:1)
当try
块中发生异常时,try
块的其余部分将被跳过,因此您的代码
try
{
callA();
callB();
}
catch{}
如果callB
引发异常,则不会执行callA
。将此分成两个try-catch
块的唯一原因是,如果您需要以不同方式处理异常,那么您可以嵌套块以保持callB
在{{1}时被跳过的行为投掷。
callA