C# try catch 中使用return 的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# try catch 中使用return 的问题相关的知识,希望对你有一定的参考价值。
今天在使用try catch的时候发现一个很奇怪的问题 甚是不解 忘高人指点。
分数不多,请见谅。 在此先行谢过。
1. 在一个static 方法中 代码如下:注意 return在try里面。 此方法没有error。
public static bool isValid()
try
...........................
return isvalid;
catch (Exception ex)
throw ex;
2. 在一个winform 的cs 文件中, 使用了以上模式, 但是报错, 并需要给一个返回值。 改成以下形式才不会报错。注意 return在try catch的外面。
private DataTable saveUser_common()
DataTable dt = null;
try
dt = .....
catch (Exception ex)
MessageBox.Show(CommonMethod.ErrorFormat(ex));
return dt;
请指点为什么会这样呢? 难道是 public static 方法和private 方法的缘故吗 ? 如果真是这样, 又有何依据呢 ?
try和catch都分别要返回,不然就写在try catch外面、最后。
你的两个catch写的不一样啊。。。
第一个catch里面,throw 就是返回了,所以不需要再写return。throw和return是一个功效,就是返回调用此方法的代码。
第二个catch里面没有返回值。 参考技术A 有 throw 了,程序执行到此就要抛出异常到函数外面了,等效于return...
你可以再 throw后面再加一些语句, VS会警告你,检测到无法访问的代码! 参考技术B 检查一下,可能不是每条分支都有返回值。
某个分支漏掉返回值了,所以你在最后补上就不出错了。
你可以一段一段的试,看看是哪里漏掉。 参考技术C 返回一个表示错误的值,比如-1,自己明白就行了
对啊,在WriteLine()之前加一个判断,
如果是表示错误的值,就不要写了啊。
参考技术D actonst 说的对 你下面一个catch里是用了messagebox.show
C#常见面试题——try-catch-finally-return
面试常会被问及try-catch-finally,现在做一下总结:
第一、不管有没有出现异常,finally块中代码都会执行。
第二、finally 代码块中不能有return。
第三、如果try 或catch中有return语句,则在finally中对返回变量的修改不会影响 返回值。
举例如下:
虽然在finally中对变量x进行了修改,但并会影响到返回值(x=2)。
static int test() { int x = 1; try { x++; return x; } catch (Exception ex) { Console.WriteLine(ex.Message); return x; } finally { ++x; Console.WriteLine("执行finally"); } }
以上是关于C# try catch 中使用return 的问题的主要内容,如果未能解决你的问题,请参考以下文章
在C#中,函数中使用异常的时候,try中的return可以返回,但是在catch中的return返回啥?
在aardio的函数里try...catch语句中使用return。