当前位置:编程学习 > C#/ASP.NET >>

C#是不是比较烂呀,程序会无故退出

C#是不是比较烂呀,写了一个多线程的程序,程序会无故退出,还是偶然现象,所有线程都用try...catch,包括UI线程,都抓不到任何东西,就无缘无故地退出了,太灵异了
以前用C++写程序,再怎么出错,通过加断点或输出调试,总能发现问题所在
这C#这样还怎么玩呀!

--------------------编程问答-------------------- 那是你写的程序烂。。谁叫你乱try catch了,catch的全是自己写的代码的bug。。隔着裤子擦屁股 --------------------编程问答-------------------- --------------------编程问答-------------------- 这个不是C#的问题 --------------------编程问答--------------------
引用 1 楼 zh6335901 的回复:
那是你写的程序烂。。谁叫你乱try catch了,catch的全是自己写的代码的bug。。隔着裤子擦屁股

就是 --------------------编程问答-------------------- .......LZ  淡定  好好看看你的代码 或许能发现问题哦 --------------------编程问答-------------------- 你能说中文烂或英文烂吗?一个哑巴,再好的语言也没有办法让他开口啊 --------------------编程问答--------------------
引用 5 楼 bkq421511585 的回复:
.......LZ  淡定  好好看看你的代码 或许能发现问题哦

try ...  catch 捕获不到异常,这个有什么用
--------------------编程问答--------------------
引用 1 楼 zh6335901 的回复:
那是你写的程序烂。。谁叫你乱try catch了,catch的全是自己写的代码的bug。。隔着裤子擦屁股

就这么回事 --------------------编程问答-------------------- try ... catch 捕获不到异常,这个有什么用
什么叫捕获不到异常

你程序内存什么的出了问题导致程序崩溃,跟异常有毛有关系 --------------------编程问答-------------------- 原来这么烂... --------------------编程问答-------------------- 估计是堆栈溢出,直接被CLR给强女干了 --------------------编程问答-------------------- 楼主说烂就烂 说不烂就不烂 把分拿来! --------------------编程问答-------------------- --------------------编程问答--------------------
引用 12 楼 fox123871 的回复:
楼主说烂就烂 说不烂就不烂 把分拿来!


嘿嘿,求分啊……………………………… --------------------编程问答--------------------
引用 1 楼 zh6335901 的回复:
那是你写的程序烂。。谁叫你乱try catch了,catch的全是自己写的代码的bug。。隔着裤子擦屁股

+1 --------------------编程问答-------------------- 呵呵。。。自己好好检查下代码吧。 --------------------编程问答-------------------- try ... catch 捕获不到异常,这个有什么用
什么叫捕获不到异常

你程序内存什么的出了问题导致程序崩溃,跟异常有毛有关系 
--------------------编程问答-------------------- 你程序内存什么的出了问题导致程序崩溃,跟异常有毛有关系 --------------------编程问答-------------------- 不是 C#是不是比较烂呀,程序会无故退出
是 你的C#是不是比较烂呀,程序会无故退出 --------------------编程问答-------------------- 新手们一般都在主线程catch子线程的exception,于是就开始骂C# --------------------编程问答--------------------
引用 19 楼 sunzongbao2007 的回复:
不是 C#是不是比较烂呀,程序会无故退出
是 你的C#是不是比较烂呀,程序会无故退出


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------------------编程问答-------------------- 拉不出屎,怪地球没吸引力! --------------------编程问答-------------------- 人烂用什么都烂,你信不?不信?那你试试...
--------------------编程问答-------------------- 是啊C#确实很烂,用回你的C++ --------------------编程问答-------------------- 写个多线程的软件不容易。 --------------------编程问答-------------------- --------------------编程问答-------------------- 多线程不是那么好搞的,一不小心就会出问题的。c# 肯定没问题,是你的程序问题。好好查查~ 要不打电话给微软问问? --------------------编程问答-------------------- 额,你这是想让别人喷吗 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 28 楼 sola040515 的回复:
额,你这是想让别人喷吗


 无语 --------------------编程问答-------------------- 子线程的异常可以写道日志里(最好写全ex的内容,好定位错误),或者在子线程的入口方法的catch上加断点,一般能捕获到。对于子线程,你不加try catch,就更得不到异常了,所以上面的大拿们有的话也不能都信,你就当屁把他们给放了吧。
 另外使用Debug.Assert很好用,在子线程里也有效。 --------------------编程问答--------------------
引用 11 楼 dongxinxi 的回复:
估计是堆栈溢出,直接被CLR给强女干了


如果C#也要考虑堆栈溢出的问题,那用C#写程序有个毛用,优势体现在哪?
反正要考虑内存,考虑堆栈,我还不如用C++,起码用不着写完程序发布时还带一大坨的.net framework
--------------------编程问答-------------------- 楼下继续 --------------------编程问答-------------------- 楼主太浮躁了…… --------------------编程问答-------------------- dbghelp.dll 系列函数 捕获一下SHE异常,或许能还原错误堆栈或错误汇编
一般都是线程开始try 结束catch SHE异常
资源和数据多线程的时候要同步
线程尽量不要死锁或者互锁,线程退出,一定要正常退出,不要强杀线程。
当然我说的是C++, C#也能用dbphelp,搜索一下吧
找本window 线程的书看一下吧 --------------------编程问答-------------------- 都不行,就用终极方法 - 日志。。。 --------------------编程问答-------------------- 如果觉得烂的话,你可以用C或Java写吧 --------------------编程问答-------------------- try-catch 不是用来调试程序的。
而是一种错误处理机制。
如果你的程序有BUG,是不应该用try-catch 来处理的。
--------------------编程问答--------------------
引用 36 楼 summer__xt 的回复:
都不行,就用终极方法 - 日志。。。


try...catch往往是在发布release的时候才起作用。你可以使用条件编译的方式,使得debug模式下没有try...catch。

基本上在调试时,程序异常就是你的“亲人”。你看到了系统异常,你才知道系统应该增加一个什么样的if判断才能使得流程更加准确和可靠,这时候你是把握着程序如何解决bug并更加合理地重构的主动权,而不是引入病态的“掩盖bug”的代码。比如说你写一个asp.net代码,那么就要在网页上让它把详细信息打印出来,你才知道立刻去到那一条语句设置断点好进一步分析。可以想一下(许多人也很多次亲身经历过)假设不管什么bug都被catch出一个打印的莫名其妙含糊其辞的报错语句,甚至有时候有人想当然地打印一个报错信息,那么这个程序员修改bug的方式肯定就是靠瞎猜的方式去改bug。这时候你唯一的办法是你先把try...atch注释掉,让网页上打印详细的异常信息和堆栈信息。其它的平台编程也是一样,不要把try...catch当作你开发时的一种什么好“办法”,你糊弄着让代码可以执行了,并不意味着bug解决了,实际上更严重了。 --------------------编程问答-------------------- 没有烂的语言,只有烂的程序员! --------------------编程问答-------------------- 先看看 try...catch 在c#的用法,再来狗叫!! --------------------编程问答--------------------
引用 41 楼 aspnetchengxu 的回复:
先看看 try...catch 在c#的用法,再来狗叫!!


同意,NND,被狗咬了 --------------------编程问答--------------------
引用 31 楼 etudiant6666 的回复:
子线程的异常可以写道日志里(最好写全ex的内容,好定位错误),或者在子线程的入口方法的catch上加断点,一般能捕获到。对于子线程,你不加try catch,就更得不到异常了,所以上面的大拿们有的话也不能都信,你就当屁把他们给放了吧。
 另外使用Debug.Assert很好用,在子线程里也有效。


所有了线程一启动就有catch,也有日志记录,但就是突然程序就没了,日志看看也是正常的,就突然就没有后面的日志了。

--------------------编程问答--------------------
引用 36 楼 summer__xt 的回复:
都不行,就用终极方法 - 日志。。。


日志都有记录的,但突然程序退出后,日志看看也正常的,就是突然就没了,没法查问题出在哪?


--------------------编程问答--------------------
引用 37 楼 huige2011 的回复:
如果觉得烂的话,你可以用C或Java写吧


本来是想用C++,但被一些微软的五毛忽悠了,说什么C#这好那也好的,就象楼上有好多
--------------------编程问答--------------------
引用 43 楼 oldforest 的回复:
引用 31 楼 etudiant6666 的回复:

子线程的异常可以写道日志里(最好写全ex的内容,好定位错误),或者在子线程的入口方法的catch上加断点,一般能捕获到。对于子线程,你不加try catch,就更得不到异常了,所以上面的大拿们有的话也不能都信,你就当屁把他们给放了吧。
另外使用Debug.Assert很好用,在子线程里也有效。


所有了线程一启动就有catch,也……

实在不行就记录有效的日志,看看那些代码是好的,逐个排除法去差错,这个C++也常用欧 --------------------编程问答--------------------

拉不出屎  怪地球没吸引力 --------------------编程问答--------------------
引用 45 楼 oldforest 的回复:
引用 37 楼 huige2011 的回复:

如果觉得烂的话,你可以用C或Java写吧


本来是想用C++,但被一些微软的五毛忽悠了,说什么C#这好那也好的,就象楼上有好多


那是你比较幸运了,这么快就把C#的这么多缺点都涌上来了,记得去买下彩票,没准能中个头奖,到那时还愁用C#还是C++么?? --------------------编程问答-------------------- mark --------------------编程问答-------------------- C#新手应该多学习,张口闭口说某某编程语言烂,我只能说这是个烂程序员。

作为新手你没有资格说某编程语言烂,老手才有资格。不了解就没有发言权。
(越是老手,看法反而越客观,很少见到老手发表这样幼稚的结论。) --------------------编程问答-------------------- java是不停烂啊,我手机下了几个java应用

一运行手机就重启了(还不带提示滴) --------------------编程问答-------------------- 把你的程序发上来,让大家开心开心 --------------------编程问答-------------------- 赞同日志说 只有把错误呈现出来才能更好的修正错误,楼主妄下断言啊 俗话说只有肉人没有肉车 一个道理  没有烂语言只有烂的编程人员啊  --------------------编程问答--------------------
引用 52 楼 karascanvas 的回复:
把你的程序发上来,让大家开心开心


+ 1 --------------------编程问答--------------------
引用 39 楼 sp1234 的回复:
引用 36 楼 summer__xt 的回复:
都不行,就用终极方法 - 日志。。。


try...catch往往是在发布release的时候才起作用。你可以使用条件编译的方式,使得debug模式下没有try...catch。

基本上在调试时,程序异常就是你的“亲人”。你看到了系统异常,你才知道系统应该增加一个什么样的if判断才能使得流程更加准确和可靠,这时候你是把握着程序如何解……


汗!没想到钻石大牛会回复
try..catch 我是只用来捕获SSH异常,一个线程使用一次,查询奔溃堆栈信息...
日志是在堆栈信息没捕获到后的方法,帮助我大致判断哪行代码导致异常。。。

我也是能不用try catch,就不用,尽力做好变量检查,这不是一个好习惯。 --------------------编程问答-------------------- 把try..catch当if用的人路过……
纯姐夫 --------------------编程问答-------------------- 这题目,看着都不爽。。。。
一门被广泛使用了好多年的计算机语言,
能烂到哪里去???

自己的程序或环境没弄好,
却怪语言,
就如同自己不会写字却怪铅笔一样,
有意思吗。。。。。。 --------------------编程问答--------------------
引用 50 楼 xinyaping 的回复:
C#新手应该多学习,张口闭口说某某编程语言烂,我只能说这是个烂程序员。

作为新手你没有资格说某编程语言烂,老手才有资格。不了解就没有发言权。
(越是老手,看法反而越客观,很少见到老手发表这样幼稚的结论。)


怎么样才算是老手?讨论下!我编程序12年了,C++搞了7年以上,C#接触也不下3年,带团队项目做了不下十个,新手?老手?

--------------------编程问答--------------------
引用 58 楼 oldforest 的回复:
引用 50 楼 xinyaping 的回复:

C#新手应该多学习,张口闭口说某某编程语言烂,我只能说这是个烂程序员。

作为新手你没有资格说某编程语言烂,老手才有资格。不了解就没有发言权。
(越是老手,看法反而越客观,很少见到老手发表这样幼稚的结论。)


怎么样才算是老手?讨论下!我编程序12年了,C++搞了7年以上,C#接触也不下3年,带团队项目做了不下十个,新手?老手?
……

你是老手了,好老的手呀!!! --------------------编程问答--------------------
引用 58 楼 oldforest 的回复:
引用 50 楼 xinyaping 的回复:

C#新手应该多学习,张口闭口说某某编程语言烂,我只能说这是个烂程序员。

作为新手你没有资格说某编程语言烂,老手才有资格。不了解就没有发言权。
(越是老手,看法反而越客观,很少见到老手发表这样幼稚的结论。)


怎么样才算是老手?讨论下!我编程序12年了,C++搞了7年以上,C#接触也不下3年,带团队项目做了不下十个,新手?老手?
……

我就干了2年编程,不过我没遇到你说的无缘无故的这个情况,凡事有果必有因。 --------------------编程问答--------------------
引用 58 楼 oldforest 的回复:
引用 50 楼 xinyaping 的回复:

C#新手应该多学习,张口闭口说某某编程语言烂,我只能说这是个烂程序员。

作为新手你没有资格说某编程语言烂,老手才有资格。不了解就没有发言权。
(越是老手,看法反而越客观,很少见到老手发表这样幼稚的结论。)


怎么样才算是老手?讨论下!我编程序12年了,C++搞了7年以上,C#接触也不下3年,带团队项目做了不下十个,新手?老手?
……

我就干了2年编程,不过我没遇到你说的无缘无故的这个情况,凡事有果必有因。 --------------------编程问答-------------------- 那个在Program 类的构造函数里里挂上这个错误信息处理事件

static Program()
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        }

 private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            string strException = string.Format("{0}发生系统异常。\r\n{1}\r\n\r\n\r\n", DateTime.Now, e.ExceptionObject.ToString());
            File.AppendAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SystemException.log"), strException);
        }

然后自己继续看日志吧。自己弱别怪语言。 --------------------编程问答-------------------- 由于楼主的加盟,C#确实变得更烂了 --------------------编程问答-------------------- 是你太烂了,相信我 --------------------编程问答-------------------- 这个帖子太欢乐了  --------------------编程问答-------------------- 怪不得C#一直被人说,原来撸主这样的人都来做C#了 --------------------编程问答-------------------- 就因为楼主这种半吊子都跑来搞C#,所以C#的名声才会越来越臭。 --------------------编程问答-------------------- 还是这里热闹,其它地方太冷清了,偶尔进来看看哈 --------------------编程问答-------------------- 莫非你在A线程中,把A线程的所有资源给释放了? --------------------编程问答-------------------- 1. 在找到故障原因之前,就推卸责任过于草率了;
2. 楼主可以尝试注释所有的try...catch,让.net捕获并报告异常 --------------------编程问答-------------------- 自己鸡鸡短,怪洞深 --------------------编程问答-------------------- 每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 --------------------编程问答-------------------- 我来看看的,顶 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 多打些断点,好好单步一下!

那么多前辈发名的语言怎么能烂呢。
--------------------编程问答-------------------- 你可以在main()方法的最开头的地方写try 最后一个括号之前写catch试试 --------------------编程问答-------------------- 然后让程序输出 Excption.Message --------------------编程问答-------------------- 这哥们太给力了   --------------------编程问答--------------------  你给我。。。 楼主 说不好 那就自己创造语言 --------------------编程问答-------------------- --------------------编程问答-------------------- mark.... --------------------编程问答-------------------- 没有烂的语言,只有菜的程序员和错误的使用语言 --------------------编程问答-------------------- 来net板块发个贴说c#烂... --------------------编程问答--------------------
引用 58 楼 oldforest 的回复:
引用 50 楼 xinyaping 的回复:C#新手应该多学习,张口闭口说某某编程语言烂,我只能说这是个烂程序员。

作为新手你没有资格说某编程语言烂,老手才有资格。不了解就没有发言权。
(越是老手,看法反而越客观,很少见到老手发表这样幼稚的结论。)

怎么样才算是老手?讨论下!我编程序12年了,C++搞了7年以上,C#接触也不下3年,带团队项目做了不下十个,新……

编程时间久并不能代表什么,说实话,用try catch来处理异常是最低级的做法,对于异常,应该做的是尽可能的在代码的可控范围内,动不动就try catch的,对代码,对程序首先就不是个负责任的态度。。。 --------------------编程问答-------------------- 只有“肉”的程序员,没有“肉”的开发语言,用asp写出比asp.net好的程序员大有人在。

在很多情况下qq也可能比奔驰快。
补充:.NET技术 ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,