求助大佬
今天用C# 照案例写一个读取数字判断是否为数字的方法在书写过程中,利用try-catch,判断是否读入准确,
以下是两种写法,一种是视频的写法,一种是我自己的写法,
自己的写法没有加循环体,导致方法名后报出以下错误
想知道为啥不加循环体会报错,加入一个循环体就不报错了。 本帖最后由 连帅帅 于 2021-4-28 14:24 编辑
try-catch语句是捕获异常用的,当你捕获异常的时候,程序是没有返回值的,这个时候就与你设定的返回值int类型冲突了,所以程序就会报错。
你只需要在try-catch外在加一个int类型的无效返回值即可!
另外再补充一下,你第一个语句是有逻辑错误的,while没有设置跳出条件,当报异常的时候程序会一直执行下去,造成死循环,如果不报异常,程序正常结束! 连帅帅 发表于 2021-4-28 09:35
try-catch语句是捕获异常用的,当你捕获异常的时候,程序是没有返回值的,这个时候就与你设定的返回值int类 ...
感谢你的解答,我还有些不懂的地方,按照你的思路,我在try-catch外加一个无效返回值,没报错。同时我在catch中也加入一个return返回值也不会报错了。但现在有一个问题就是,我加入一个循环体,而在外界不加你所说的无效返回值,程序同样不报错了,这我就很疑惑了,循环逻辑这个是有问题,难道就是这个逻辑错误导致该方法没有报错? 继续探索中
将循环逻辑修改后,在主程序中调用运行,发现达到想要的效果,但我想在方法中修改循环条件时又出现了问题
我在方法中定义一个bool类型的变量,将循环的条件改为定义的变量,结果又出现上述的错误
暗中观察的猫 发表于 2021-4-28 10:51
感谢你的解答,我还有些不懂的地方,按照你的思路,我在try-catch外加一个无效返回值,没报错。同时我在c ...
首先,你要定位到,你这个程序有几种返回的情况:
一种就是正常情况下,try没有捕获异常,程序正常执行,而try里面是有返回值的,所以没问题,其次就是catch里面,catch的意思是在捕获异常之后的处理方案,你在catch里面加上返回值,那么就不存在没有返回值的情况了,程序就不会报错了。
而我在try-catch最外面加一个无效返回值,目的就是处理没有返回值的所有情况的出现,无论你这个程序有几种没有返回值的情况,到最后肯定会执行这个无效返回值,所以程序也不会报错。
关于加上while程序就不报错了这个事情,你要理解程序的执行顺序,程序执行到while的时候,如果不报异常,返回值,正常执行,程序结束;但是如果报了异常,这将是一个死循环,也就不存在什么返回值的类型了,所以无论你定义为什么数据类型,程序都不会报错,因为永远到不了返回的哪一步。
最后,关于try-catch的用法,还有一个关键字为finally,表示一定会执行的代码,建议你百度详细了解一下,毕竟知根知底才能百战不殆! 连帅帅 发表于 2021-4-28 14:20
首先,你要定位到,你这个程序有几种返回的情况:
一种就是正常情况下,try没有捕获异常,程序正常执 ...
好的,非常感谢,明白了为啥while加入后不报错了 暗中观察的猫 发表于 2021-4-28 15:14
好的,非常感谢,明白了为啥while加入后不报错了
加油{:10_327:}
页:
[1]