首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#在try-catch中使用return返回有关问题

2013-07-11 
C#在try-catch中使用return返回问题在C#中 的一个 静态方法中我使用了try-catch-finally如 public static

C#在try-catch中使用return返回问题
在C#中 的一个 静态方法中
我使用了try-catch-finally
如 

public static string tsReturn()
{
  try
    {
      //数据库 操作
      return "...";
    }catch(Exception ex)
    {
      return null;
    }
    finally
    {
       //其他操作
    }
}

问题来了 为什么 C#中 还会执行finally 代码块呢 
是不是C#默认这样设置的呢
很纠结啊
看来是我对.net  太无知了 微软 是 如何设计 try-catch-finally 的呢 
看样子又点像 栈 啊 
[解决办法]
finally无论是否有错误都会执行的
[解决办法]
  finllay,,不管你在try里面return了还是怎么样,,程序都会执行finllay的,,
[解决办法]
finllay,是不管你在try里面return了还是怎样,程序都会先执行finllay的代码,然后再执行return。所以把无论如何都要执行的操作写在这里面。
[解决办法]
因为一旦抛异常就会直接跳到catch块,这样有可能导致try块中打开的资源无法释放...所以finally块是必须执行的,以便在finally块中做善后处理...

另外...catch块不做任何处理隐藏异常是非常不好的习惯,至少也要记录一下异常log以便管理员查看...
[解决办法]
我们的程序难免会出现错误,有的错误是在编译的时候产生的,这就是编译错误。
而有的错误是在程序运行过程中产生,这就是程序异常。
总结而来,也就是说,程序的错误现象可以分为两种:
一、错误:在编译的时候产生
二、异常:在程序运行的过程中发生

但是有的异常我们无法避免,但是能够预知。
为了让应用程序能够很好的工作,我们要对那些可能发生的错误进行编码处理,这就是异常处理。

.NET提供了try...catch语句块来捕获和处理异常。
异常处理是在应用程序发生异常情况时,采取什么样的操作,是继续运行程序,还是中断程序的运行。

try
{
  //可能出现异常的代码
}
catch(Exception ex)
{
  MessageBox.Show(ex.Message);
}

如果出现异常,程序就会跳转到catch块中,这个过程就叫做捕获了异常。
如果程序没有出现异常,try块中的代码就会正常执行,catch块中的语句句不会执行。

.NET还给我们提供了一个finally块,无论程序是否发生异常,写在finally块中的代码
都会执行。


希望对楼主有帮助!


[解决办法]

引用:
finllay,,不管你在try里面return了还是怎么样,,程序都会执行finllay的,,


+1
[解决办法]
finally可以没有,也可以只有一个。无论有没有发生异常,它总会在这个异常处理结构的最后运行。即使你在try块内用return返回了,在返回前,finally总是要执行,这以便让你有机会能够在异常处理最后做一些清理工作。如关闭数据库连接等等。

[解决办法]
finally 与catch运行在不同的代码槽上,不管try catch是否运行,finally 都会运行
[解决办法]
这个和栈没干系吧,栈的意思是程序中的变量或其他无需手工释放的资源,有系统控制。
这个finally可用可不用,用绝对会执行。
[解决办法]
finally 不管什么情况都会执行
[解决办法]
finally一定执行,这是必须的 不论你之前有没有return

热点排行