请大侠帮我看看这个异常的问题 搞了很久 就到关键地步了 在线等
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),一直循环下去.
[解决办法]
[解决办法]
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
[解决办法]
“我这个程序的作用是发送一个消息给自己,然后用那个异常进行监听消息”
这里面有很大的设计问题啊
不要基于异常来作为常规的的逻辑设计,异常就是异于通常的意思
你不如说说你到底在实现一个什么样的功能,不太理解你的代码