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

请大侠帮小弟我看看这个错误的有关问题 搞了很久 就到关键地步了

2012-01-22 
请大侠帮我看看这个异常的问题 搞了很久 就到关键地步了 在线等using Systemusing System.ComponentModel

请大侠帮我看看这个异常的问题 搞了很久 就到关键地步了 在线等
using System; 
using System.ComponentModel; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Text; 
using System.Net.Sockets; 
using System.Net; 
using System.Windows.Forms; 
using System.Threading; 
namespace WindowsFormsApplication2 

  public partial class Form1 : Form 
  { 
  IPEndPoint server = null; 
  UdpClient uc = null; 
  public Form1() 
  { 
  InitializeComponent(); 
  } 
  Thread thread1 = null; 
  private void Form1_Load(object sender, EventArgs e) 
  { 
  try 
  { 
  IPEndPoint iep = new IPEndPoint(IPAddress.Any, 1000); 
  IPAddress address = IPAddress.Parse("127.0.0.1"); 
  byte[] a=new byte[]{1,11}; 
  uc = new UdpClient(); 
  server = new IPEndPoint(address, 1000); 
  uc.Send(a,a.Length,server); 
  thread1 = new Thread(jieshou); 
  thread1.Start(); 

  } 
  catch 
  { 
  MessageBox.Show("sdf"); 
  } 
  } 
  public void jieshou() 
  { 
  while (true) 
  { 
  try 
  {  
  byte[] Data = uc.Receive(ref server); //将获取的远程消息转换成二进制 
  //throw new Exception("sdf");  
  } 
  catch 
  { MessageBox.Show("d"); } 
  } 
   
  }  
  } 



问题是当执行到 byte[] Data = uc.Receive(ref server);的时候会出现异常,然后抛出之后循环就停止了。当注释掉 byte[] Data = uc.Receive(ref server); 

改成 try 
  {  
  //byte[] Data = uc.Receive(ref server); //将获取的远程消息转换成二进制 
  throw new Exception("sdf");  
  } 
后就会不断的循环抛出,不会停止,为什么第一种执行一次就停止 第二种怎么异常都不停止呢? 
 
 
 

  


[解决办法]
你怎么发了两个贴问这个。那我贴过来吧。

与这个语句有关 byte[] Data = uc.Receive(ref server); 

这个语句第一次执行时,抛出了异常,或许也清空了缓冲区,下一次执行时因为没有数据,所以也没有再抛出异常
[解决办法]
另外,注意身体,深更半夜的也多少人回答问题
[解决办法]
建议你在byte[] Data = uc.Receive(ref server); 语句处设断点,跟踪进去,看看到底运行到哪里出现的异常
[解决办法]
这个语句第一次执行时,抛出了异常,或许也清空了缓冲区,下一次执行时因为没有数据,所以也没有再抛出异常

对于这句的理解,我还是不懂,我这个程序的作用是发送一个消息给自己,然后用那个异常进行监听消息,如果那个异常执行一次就停止的话,那就是说这样监听不了,所以我必须明白为什么它会执行一次异常就停止了,还有 要怎样情况下才会不异常 另外谢谢你的关心
[解决办法]
How about make a job-managerment. catch exception and re-start the thread?

[解决办法]
捕获 异常 是这样说的远程主机强迫关闭了一个现有的连接。
[解决办法]
改成 try 
{
//byte[] Data = uc.Receive(ref server); //将获取的远程消息转换成二进制 
throw new Exception("sdf");


这样就没有异常了,throw new Exception("sdf")作为普通语句执行,符合条件(true),一直循环下去. 

[解决办法]

探讨
How about make a job-managerment. catch exception and re-start the thread?

[解决办法]
UdpClient udpClient = new UdpClient(12000);
string returnData = "end";
do
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
returnData = Encoding.UTF8.GetString(receiveBytes);
} while (returnData != "end");
http://topic.csdn.net/u/20090520/20/41480ff2-72de-49bd-a8e3-29072bd53a64.html
[解决办法]
“我这个程序的作用是发送一个消息给自己,然后用那个异常进行监听消息”

这里面有很大的设计问题啊

不要基于异常来作为常规的的逻辑设计,异常就是异于通常的意思

你不如说说你到底在实现一个什么样的功能,不太理解你的代码

热点排行