c#.net内部异常捕获问题
2011-01-07 18:32
363 查看
public static void Download()
{
int count = 0;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://img.bimg.126.net/photo/c7bckFJxdJxSwQLIy76HTQ==/1755840904721658663.jpg");
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
byte[] buffer = new byte[64];
string temppath = "g:\\1755840904721658663.jpg";
using (System.IO.Stream downloadStream = response.GetResponseStream())
{
using (FileStream saveFileStream = new FileStream(temppath, FileMode.Create, FileAccess.Write, FileShare.None))
{
int readSize = 0;
while (true)
{
readSize = downloadStream.Read(buffer, 0, buffer.Length);
if (readSize <= 0) break;
saveFileStream.Write(buffer, 0, readSize);
}
Console.WriteLine("弹出");
}
}
}
}
catch (System.Net.Sockets.SocketException ex)
{
Console.WriteLine("网络中断");
}
catch (Exception ex)
{
//throw ex;
Console.WriteLine("异常类型:{0}", ex.GetType());
Console.WriteLine("异常信息:{0}", ex.Message);
Console.WriteLine("异常来源:{0}", ex.Source);
Console.WriteLine("异常堆栈:{0}", ex.StackTrace);
Console.WriteLine("内部异常:{0}", ex.InnerException);
}
}
异常类型:System.IO.IOException
异常信息:无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。
内部异常:System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一
个现有的连接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size,
SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 s
ize)
IOException.InnerException是因为在读取Stream过程中,网络中断导致。
所以代码中应该加上一个Catch IOException的处理。
...
catch(IOException ex)
{
if(IOException.InnerException is System.Net.Sockets.SocketException)
Console.WriteLine("网络中断");
else
Console.WriteLine(ex.Message);
}
...
{
int count = 0;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://img.bimg.126.net/photo/c7bckFJxdJxSwQLIy76HTQ==/1755840904721658663.jpg");
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
byte[] buffer = new byte[64];
string temppath = "g:\\1755840904721658663.jpg";
using (System.IO.Stream downloadStream = response.GetResponseStream())
{
using (FileStream saveFileStream = new FileStream(temppath, FileMode.Create, FileAccess.Write, FileShare.None))
{
int readSize = 0;
while (true)
{
readSize = downloadStream.Read(buffer, 0, buffer.Length);
if (readSize <= 0) break;
saveFileStream.Write(buffer, 0, readSize);
}
Console.WriteLine("弹出");
}
}
}
}
catch (System.Net.Sockets.SocketException ex)
{
Console.WriteLine("网络中断");
}
catch (Exception ex)
{
//throw ex;
Console.WriteLine("异常类型:{0}", ex.GetType());
Console.WriteLine("异常信息:{0}", ex.Message);
Console.WriteLine("异常来源:{0}", ex.Source);
Console.WriteLine("异常堆栈:{0}", ex.StackTrace);
Console.WriteLine("内部异常:{0}", ex.InnerException);
}
}
异常类型:System.IO.IOException
异常信息:无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。
内部异常:System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭了一
个现有的连接。
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size,
SocketFlags socketFlags)
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 s
ize)
IOException.InnerException是因为在读取Stream过程中,网络中断导致。
所以代码中应该加上一个Catch IOException的处理。
...
catch(IOException ex)
{
if(IOException.InnerException is System.Net.Sockets.SocketException)
Console.WriteLine("网络中断");
else
Console.WriteLine(ex.Message);
}
...
相关文章推荐
- 内部异常捕获问题asp.net
- Unity(C#.net)网络通信问题解决(服务器开启失败,Socket下的“由于目标机器积极拒绝,无法连接”异常)
- C#.NET--如何处理程序的未捕获异常
- C#的单例模式引起的自定义异常的捕获问题
- .net C# 捕获所有未捕获异常
- 捕获子线程异常 vb.net c#
- C# ASP.NET调试问题<compilation debug="false" targetFramework="4.0"/>
- 使用cocoa捕获dock栏中的“退出”事件,解决qt开发的应用程序退出异常的问题
- [ASP.NET学习笔记之二十六]C#的异常处理
- 回答网友的问题,有C# ASP.NET 通用权权限系统源码下载收费
- asp.net/C# 执行存储过程技术要点,获取Return返回值,解决“存储过程总返回-1”的问题
- .net中前台javascript与后台c#函数相互调用问题
- C#调用Response.Redirect方法触发异常问题
- ASP.NET MVC 异常捕获
- vs.net c#连接ORCALE 出现64与32问题
- C#(.Net) 解决Informix中文乱码问题
- 七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL
- C#.Net中TreeView控件右键选择节点问题处理
- C#调用C++库,如何捕获异常
- ASP.NET中前台javascript与后台c#函数相互调用问题(1)http://hi.baidu.com/xuexiang516168/blog/item/90f2bc4bc316372908f7eff4.html