怎么跳出二层方法?

孙月魂 2013-01-14 10:12:18
比如如果我有一个这样的方法:
void A()
{
void B();
void c();
}

如果我B方法出现了错误,能不能用return直接跳出A方法显示错误,不执行下面的C方法?如果不行那应该怎么做?
...全文
270 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
当你的B没有异常时,而你纠结于“挑出两层方法”,这时候你明显是缺乏消息参数设计的经验,连函数方法基本的输入输入参数的作用也没有仔细学习过。 正常地方法参数定义的知识,千万不要跟Exception机制搞混了。
  • 打赏
  • 举报
回复
引用 7 楼 speak13579 的回复:
哦,还有就是如果没有出错,但是出现特定条件时我也想让它跳出二层方法,怎么办? 比如: void B() { if(e=f) 跳出二层方法 }
这跟抛出异常是两回事。异常是一种强大的机制,不需要编写代码;而你自己的业务逻辑,必须自己负责设计参数。
Conmajia 2013-01-25
  • 打赏
  • 举报
回复
思路有点二。。挽尊。。
phommy 2013-01-25
  • 打赏
  • 举报
回复
返回bool最方便了,可以 b() && c() && d() && ...
风吹腚腚凉 2013-01-25
  • 打赏
  • 举报
回复
引用 12 楼 leafmao 的回复:
如果是出现特定条件,希望跳出二层方法的话,我采用的方法是将B设置为bool型 C# code ? 1234567891011121314 private bool B() { ... if(e=f) return true; return false; } void A() { if(B) return; ……
那也要捕获2个的异常。
风吹腚腚凉 2013-01-25
  • 打赏
  • 举报
回复
引用 11 楼 caozhy 的回复:
把“二层方法”和“一层方法”合并为一个方法。
哈哈,合并成一个方法就不能实现通用了,你是真笨呢还是真笨呢。 看见你的回复我笑了,然后我们公司的人都看我。。。以为我是神经病诶,乐死我了。 最后一看居然是你,我又笑了。
leafmao 2013-01-14
  • 打赏
  • 举报
回复
如果是出现特定条件,希望跳出二层方法的话,我采用的方法是将B设置为bool型
private bool B()
{
   ...
   if(e=f)
       return true;
   return false;
}

void A()
{
   if(B)
       return;
    ...
}
threenewbee 2013-01-14
  • 打赏
  • 举报
回复
把“二层方法”和“一层方法”合并为一个方法。
宝_爸 2013-01-14
  • 打赏
  • 举报
回复
引用 7 楼 speak13579 的回复:
哦,还有就是如果没有出错,但是出现特定条件时我也想让它跳出二层方法,怎么办? 比如: void B() { if(e=f) 跳出二层方法 }
这个最好不用Exception. 可以把C放到B里来调用。 void A() { B(); } Void B() { if (...) C(); } 或者用2楼的方法1.B返回true或者false.
draling 2013-01-14
  • 打赏
  • 举报
回复
给B函数添加Bool型返回值,C函数当中添加判断 bool flag = false; void A() { bool B() { if(出错) { flag = true; return; } } void c() { if(!flag ) { } } }
XBodhi. 2013-01-14
  • 打赏
  • 举报
回复
可以用下面的方式来做,层层上抛,层层抓取,细化异常 空Catch 可以做到 return

class AException :Exception{}
class BException :Exception{}
class CException :Exception{}

void Main()
{
   try
   {
     A();
     B();
     C();
   }
   catch(AException  aex)
   {}
   catch(BException  bex)
   {}
   catch(BException  cex)
   {}
   
}

void A()
{
    try
    {}
    catch(Exception ex)
    {  
      throw new AException(ex);
     }
}


void B()
{
    try
    {}
    catch(Exception ex)
    {  
      throw new BException(ex);
     }
}

void C()
{
    try
    {}
    catch(Exception ex)
    {  
      throw new CException(ex);
     }
}


孙月魂 2013-01-14
  • 打赏
  • 举报
回复
哦,还有就是如果没有出错,但是出现特定条件时我也想让它跳出二层方法,怎么办? 比如: void B() { if(e=f) 跳出二层方法 }
翔教授 2013-01-14
  • 打赏
  • 举报
回复
B方法中throw,A方法try catch
wangweimutou 2013-01-14
  • 打赏
  • 举报
回复
一、作用:用于开发人员预测程序代码异常、捕获这些异常、处理这些异常。异常可能是算术异常、下标越界、输入输出异常等等。 二、基本结构:异常处理通常用try……catch……finally关键字来定义代码块。 try {   //有可能出现异常的代码; } catch() {   //对异常处理的代码; } finally {   //执行必要的清理操作,以释放资源; } 呵呵,希望对楼主有帮助
csdn_风中雪狼 2013-01-14
  • 打赏
  • 举报
回复
用 try 如果方法B出错了, 就会跳到 catch 处,你可以根据错误信息,进行处理,
gxingmin 2013-01-14
  • 打赏
  • 举报
回复
3、try catch void A() { try { B(); C(); } catch(Exception e) { MessageBox.Show(e.Message); } }
gxingmin 2013-01-14
  • 打赏
  • 举报
回复
1、将B函数改成bool B();即有返回值,如果出错,返回false;不出错返回true void A() { if(!B()) return; C(); } 2、在类里加一个局部变量,如:private bool m_bIsRight; B()函数出错,m_bIsRight=false;,B()函数不出错,m_bIsRight=true; void A() { B(); if(!m_bIsRight) return; C(); }
真相重于对错 2013-01-14
  • 打赏
  • 举报
回复
try catch throw

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧