try { CallMethod() } catch { } 根据我的经验,我通常不会这样做。 但是,如果我有一个function,说,使用第三方COM组件偶尔会失败,它实际上不够重要,因为我会在几秒钟内再次调用它,是否可以这样做? 如果没有,我还有什么选择?
如果我想要做的就是在exception发生时将其抛出一个级别? private void TryCatch() { try { foo(); } catch (Exception ex) { throw; } } private void NoTryCatch() { foo(); } 这两种方法不一样吗? 如果在TryCatch中发生exception,它将被抛出一个级别,如果在NoTryCatch中发生exception,exception也将被抛出一个级别。 在使用ReSharper之后出现了这个问题并注意到它建议删除try / catch块,因为它是多余的。
我的代码中有一个非常奇怪的引用。 我正在开发ac#chat客户端 – 服务器应用程序。 当我关闭服务器时,我希望客户端自动关闭。 客户端使用StremReader从TcpClient对象读取。 客户端处于while循环中,它读取一行(StreamReader.ReadLine()),然后使用它读取的行执行一些操作。 当serever关闭时,我也关闭tcp连接服务器端。 所以,我期待客户端看到由readline引起的SocketException,捕获它并退出。 但是例外不会被抓住! 这是客户端循环代码: while (true) { try { ricev = read.ReadLine(); } catch(SocketException exc) { //It never gets in here } chat.Invoke(showMessage, ricev); } 当我关闭服务器时,visual studio告诉我在System.dll中引发了“System.Net.Sockets.SocketException”第一次机会exception,但是我无法理解它。 为什么会这样? 我还尝试用a捕获任何genericsexception catch { } 阻止,但这也不起作用。 任何帮助将不胜感激! 编辑:经过多次尝试后,我发现SocketException根本没有被提升。 这是如此奇怪,正如我在评论中所说,在相反的情况下,当客户端在服务器之前关闭时,exception会被提升并且我可以解决它。 我真的不知道发生了什么……
我实现了一个C#应用程序,它以30fps的帧速率接收帧RGB。 使用以下代码管理帧到达事件: void client_ColorFrameReady(object sender, ColorFrameReadyEventArgs e) { mycounter++; Console.WriteLine(“new frame received: ” + mycounter); if (writer != null) { count++; if (count % 2== 0) { using (var frame = BitmapImage2Bitmap(e.ColorFrame.BitmapImage)) using (var thumb = ResizeBitmap(frame, 320, 240)) { writer.WriteVideoFrame(thumb); } } } else { writer.Close(); } } 使用if条件我只管理两个帧中的一个。 当我的代码调用BitmapImage2Bitmap我获得了以下exception: 英语中的例外应该是: A first chance […]
我已经处理过我会抛出/重新抛出exception的实例,知道它周围的代码会捕获特定的exception。 但是,有没有时间你想要抛出exception,知道它不会被捕获? 或者至少,没有捕获exception? 除非处理权利,否则例外会立即停止申请? 所以我想我是否想要你故意让你的应用程序死掉?
我已经习惯使用一般的catch语句,并且我以一般方式处理这些exception。 这是不好的做法吗? 如果是这样,我怎么知道可以抛出哪些特定exception以及我捕获哪些exception?
我想要一个真正在C#中进行实时编程或者真正了解语言内部的人的回复。 我知道exception不应该用于处理正常处理,而只是用于检测错误条件。 有关该主题的讨论很多。 我想知道是否有任何运行时间减慢,只需要一个try / catch块(除非程序必须以任何方式结束,否则永远不会捕获exception)。 try / catch块位于必须重复调用的函数内。 我怀疑只有最低成本。 是否可以根据CPU周期或其他任务(与浮点乘法相同的成本)或其他方式来量化成本? 我们在Windows XP下使用Microsoft C#.Net 3.5。
假设我在两个不同的程序集中有以下两个类: //in assembly A public class TypeA { // Constructor omitted public void MethodA { try { //do something } catch { throw; } } } //in assembly B public class TypeB { public void MethodB { try { TypeA a = new TypeA(); a.MethodA(); } catch (Exception e) //Handle exception } } } 在这种情况下,MethodA中的try-catch只是提升exception,但并没有真正处理它。 […]
这有点抽象,但是有没有办法抛出exception并让它进入多个catch块? 例如,如果它匹配特定exception后跟非特定exception。 catch(Arithmetic exception) { //do stuff } catch(Exception exception) { //do stuff }
为什么不是“Console.WriteLine(”asdf“);” 执行? 所有其他人都是。 难道不应该因为我们不能从最终范围跳出来吗? static bool Func() { try { try { } finally { try { throw new ApplicationException(); } finally { Console.WriteLine(“asd”); } Console.WriteLine(“asdf”); } } finally { Console.WriteLine(“asd”); } }