Gor*_*son 46 c# using exception using-statement
use会捕获异常还是抛出异常?即
using (StreamReader rdr = File.OpenText("file.txt"))
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
如果streamreader抛出异常是通过使用或抛出来捕获的,那么调用函数可以处理它吗?
jop*_*jop 62
当您看到using语句时,请考虑以下代码:
StreadReader rdr = null;
try
{
rdr = File.OpenText("file.txt");
//do stuff
}
finally
{
if (rdr != null)
rdr.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
所以真正的答案是它不会对使用块体内抛出的异常做任何事情.它不处理它或重新抛出它.
Fly*_*wat 32
使用语句不要吃异常.
所有"使用"的作用都是将对象作为使用块的范围,并在对象离开块时自动调用对象上的Dispose().
但是,如果一个线程被外部源强制中止,则可能永远不会调用Dispose.
它会抛出异常,因此要么包含方法需要处理它,要么将其传递给堆栈.
try
{
using (
StreamReader rdr = File.OpenText("file.txt"))
{ //do stuff
}
}
catch (FileNotFoundException Ex)
{
// The file didn't exist
}
catch (AccessViolationException Ex)
{
// You don't have the permission to open this
}
catch (Exception Ex)
{
// Something happened!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28541 次 |
| 最近记录: |