诸多错误居然来自一个错误。就是没有抛出异常。问,为什么不会自动抛出异常了?

时间:2022-03-16 18:34:15
不知道是否那里设置过了,好像所有错误都不会出现异常窗口了。很是奇怪。给调试带来很大麻烦。

做程序调试的时候发现程序在某些地方老是要停止运行。就是执行完一个语句后就不在往下执行了。
很是郁闷。一直找不到原因。后来用断点发现了错误。可是这个简单的错误应该会抛出一个异常的。
为什么不会出现错误对话框?
还有。加了一个APP.config文件。是否和这个文件的设置有关?

比如一个简单的错误
string str = "123"
str.Substring(0,4)
这样运行的时候是否应该出现异常?
可是我的就在str.Substring(0,4)停止运行了。却不出现错误。让我很是郁闷。到底那里设置错了?

13 个解决方案

#1


回弹出一个错误对话框,告诉你“索引和长度必须引用该字符串内的位置”

如果你要看更详细的错误信息,你可以自己捕获异常,代码修改如下:
string str="123";
try{
    str.Substring(0,4);
}
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}

#2


很可能跟APP.config设置有关,删了试试
或者把APP.config帖出来看看

#3


App.Config是GotDotNet.ApplicationBlocks.Data的配置。我没有添加任何东西。都是一些appSettings。。删除就无法读取配置了。修改程序很麻烦。不知道是否有了App.config后默认就不抛出错误了?难道需要在App.config中添加配置?

#4


回弹出一个错误对话框,告诉你“索引和长度必须引用该字符串内的位置”

如果你要看更详细的错误信息,你可以自己捕获异常,代码修改如下:
string str="123";
try{
    str.Substring(0,4);
}
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}
这个解释很对, 并且不同的类所捕获的异常是不同的 Exception ex 可以在不同的情况做不同的改变
列如 如果在Sql语句的时候.可以用SqlException ex

#5


hzw66(胡先生) 和 husd2001(从开始到现在) 你们没理解我的意思。我不是想人为的去捕捉错误或者处理错误。我是想让程序出错的时候告诉我。
我知道默认.net出错的时候是会出现一个错误对话框的。里面有一些有用的信息。可是我现在的这个程序如果出错了不会出现这个错误对话框。所以给我调试和找到错误所在造成了麻烦。

#6


先重装 .net ,不行再重装系统。
我曾经遇到程序一设断点就死机的情况,最后只能用Ghost文件进行系统恢复。

#7


应该是设置的问题,不要急于重装。
看看Web.Config文件中CustomError设置是错误在本地显示还是服务端客户端都可见还是都不可见。
一般machine.config/web.config/app.config三者内部定义了继承关系,看看显示错误信息的设置是否被重写了,尤其看看app.config的设置。
另外还可以用Trace来抛出错误或者用catch块抛出错误。

#8


Trace我记得是ASP.net中的吧?WinForm可以用么?如果用Catch块首先我需要知道错误在那里了。可是我现在代码比较多。不可能吧所有地方都放上tey吧?
至于machine.config我没有动过。应该是默认的情况。app.config中没有任何关于错误处理的节。都是一些应用程序设置。比如一些字符串什么的。
比如我试验了一下就像这样的错误都不会出现异常。只是代码停止运行了。

这里代码如果Player1.status.ToString() 是小于4个字符就停在条件判断那里了
不会运行{}里面的内容
但是如果按照.net应该会抛出一个异常的是不是啊?
if (this.Player1.status.ToString().Substring(0,4) == "正在播放")
{
Debug.WriteLine("isRun");
AppPlay.Player1pause();
AppPlay.ChangePlayListState(GetplaybillNo(play1url),"Pause");
}

#9


uuupup

#10


最后一次UP..看看有谁知道。。

#11


str.Substring(0,4);
这个如果你的字符少于要取的字符的话,他会自动的取剩下的全部字符,
如同

str.Substring(0) ;

#12


换台机器,把程序考过去看看,是程序的问题?
还是系统的问题。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vsdebug/html/vctskJust-In-TimeDebugging.htm

#13


换台机器,把程序考过去看看,是程序的问题?
还是系统的问题。
同意!!!

#1


回弹出一个错误对话框,告诉你“索引和长度必须引用该字符串内的位置”

如果你要看更详细的错误信息,你可以自己捕获异常,代码修改如下:
string str="123";
try{
    str.Substring(0,4);
}
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}

#2


很可能跟APP.config设置有关,删了试试
或者把APP.config帖出来看看

#3


App.Config是GotDotNet.ApplicationBlocks.Data的配置。我没有添加任何东西。都是一些appSettings。。删除就无法读取配置了。修改程序很麻烦。不知道是否有了App.config后默认就不抛出错误了?难道需要在App.config中添加配置?

#4


回弹出一个错误对话框,告诉你“索引和长度必须引用该字符串内的位置”

如果你要看更详细的错误信息,你可以自己捕获异常,代码修改如下:
string str="123";
try{
    str.Substring(0,4);
}
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}
这个解释很对, 并且不同的类所捕获的异常是不同的 Exception ex 可以在不同的情况做不同的改变
列如 如果在Sql语句的时候.可以用SqlException ex

#5


hzw66(胡先生) 和 husd2001(从开始到现在) 你们没理解我的意思。我不是想人为的去捕捉错误或者处理错误。我是想让程序出错的时候告诉我。
我知道默认.net出错的时候是会出现一个错误对话框的。里面有一些有用的信息。可是我现在的这个程序如果出错了不会出现这个错误对话框。所以给我调试和找到错误所在造成了麻烦。

#6


先重装 .net ,不行再重装系统。
我曾经遇到程序一设断点就死机的情况,最后只能用Ghost文件进行系统恢复。

#7


应该是设置的问题,不要急于重装。
看看Web.Config文件中CustomError设置是错误在本地显示还是服务端客户端都可见还是都不可见。
一般machine.config/web.config/app.config三者内部定义了继承关系,看看显示错误信息的设置是否被重写了,尤其看看app.config的设置。
另外还可以用Trace来抛出错误或者用catch块抛出错误。

#8


Trace我记得是ASP.net中的吧?WinForm可以用么?如果用Catch块首先我需要知道错误在那里了。可是我现在代码比较多。不可能吧所有地方都放上tey吧?
至于machine.config我没有动过。应该是默认的情况。app.config中没有任何关于错误处理的节。都是一些应用程序设置。比如一些字符串什么的。
比如我试验了一下就像这样的错误都不会出现异常。只是代码停止运行了。

这里代码如果Player1.status.ToString() 是小于4个字符就停在条件判断那里了
不会运行{}里面的内容
但是如果按照.net应该会抛出一个异常的是不是啊?
if (this.Player1.status.ToString().Substring(0,4) == "正在播放")
{
Debug.WriteLine("isRun");
AppPlay.Player1pause();
AppPlay.ChangePlayListState(GetplaybillNo(play1url),"Pause");
}

#9


uuupup

#10


最后一次UP..看看有谁知道。。

#11


str.Substring(0,4);
这个如果你的字符少于要取的字符的话,他会自动的取剩下的全部字符,
如同

str.Substring(0) ;

#12


换台机器,把程序考过去看看,是程序的问题?
还是系统的问题。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vsdebug/html/vctskJust-In-TimeDebugging.htm

#13


换台机器,把程序考过去看看,是程序的问题?
还是系统的问题。
同意!!!