Tag: try catch

是否可以捕捉exception并且什么都不做?

try { CallMethod() } catch { } 根据我的经验,我通常不会这样做。 但是,如果我有一个function,说,使用第三方COM组件偶尔会失败,它实际上不够重要,因为我会在几秒钟内再次调用它,是否可以这样做? 如果没有,我还有什么选择?

C#我是否需要TRY / CATCH才能投掷?

如果我想要做的就是在exception发生时将其抛出一个级别? private void TryCatch() { try { foo(); } catch (Exception ex) { throw; } } private void NoTryCatch() { foo(); } 这两种方法不一样吗? 如果在TryCatch中发生exception,它将被抛出一个级别,如果在NoTryCatch中发生exception,exception也将被抛出一个级别。 在使用ReSharper之后出现了这个问题并注意到它建议删除try / catch块,因为它是多余的。

C#SocketException没有被捕获

我的代码中有一个非常奇怪的引用。 我正在开发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会被提升并且我可以解决它。 我真的不知道发生了什么……

BitmapFrame.Create的例外(WPF框架中的错误?)

我实现了一个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。 但是,有没有时间你想要抛出exception,知道它不会被捕获? 或者至少,没有捕获exception? 除非处理权利,否则例外会立即停止申请? 所以我想我是否想要你故意让你的应用程序死掉?

在C#中,我如何知道要捕获哪些exception?

我已经习惯使用一般的catch语句,并且我以一般方式处理这些exception。 这是不好的做法吗? 如果是这样,我怎么知道可以抛出哪些特定exception以及我捕获哪些exception?

C#实时尝试捕获

我想要一个真正在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,但并没有真正处理它。 […]

我可以执行多个Catch块吗?

这有点抽象,但是有没有办法抛出exception并让它进入多个catch块? 例如,如果它匹配特定exception后跟非特定exception。 catch(Arithmetic exception) { //do stuff } catch(Exception exception) { //do stuff }

在C#中嵌套try-finally

为什么不是“Console.WriteLine(”asdf“);” 执行? 所有其他人都是。 难道不应该因为我们不能从最终范围跳出来吗? static bool Func() { try { try { } finally { try { throw new ApplicationException(); } finally { Console.WriteLine(“asd”); } Console.WriteLine(“asdf”); } } finally { Console.WriteLine(“asd”); } }