鱼C论坛

 找回密码
 立即注册
查看: 2798|回复: 6

[已解决]求助大佬

[复制链接]
发表于 2021-4-28 08:59:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天用C# 照案例写一个读取数字判断是否为数字的方法
在书写过程中,利用try-catch,判断是否读入准确,

以下是两种写法,一种是视频的写法,一种是我自己的写法,

加入循环体

加入循环体

不加循环体

不加循环体


自己的写法没有加循环体,导致方法名后报出以下错误

错误

错误


想知道为啥不加循环体会报错,加入一个循环体就不报错了。
最佳答案
2021-4-28 14:20:22
暗中观察的猫 发表于 2021-4-28 10:51
感谢你的解答,我还有些不懂的地方,按照你的思路,我在try-catch外加一个无效返回值,没报错。同时我在c ...

首先,你要定位到,你这个程序有几种返回的情况:
  一种就是正常情况下,try没有捕获异常,程序正常执行,而try里面是有返回值的,所以没问题,其次就是catch里面,catch的意思是在捕获异常之后的处理方案,你在catch里面加上返回值,那么就不存在没有返回值的情况了,程序就不会报错了。
  而我在try-catch最外面加一个无效返回值,目的就是处理没有返回值的所有情况的出现,无论你这个程序有几种没有返回值的情况,到最后肯定会执行这个无效返回值,所以程序也不会报错。
  关于加上while程序就不报错了这个事情,你要理解程序的执行顺序,程序执行到while的时候,如果不报异常,返回值,正常执行,程序结束;但是如果报了异常,这将是一个死循环,也就不存在什么返回值的类型了,所以无论你定义为什么数据类型,程序都不会报错,因为永远到不了返回的哪一步。
  最后,关于try-catch的用法,还有一个关键字为finally,表示一定会执行的代码,建议你百度详细了解一下,毕竟知根知底才能百战不殆!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-28 09:35:39 | 显示全部楼层
本帖最后由 连帅帅 于 2021-4-28 14:24 编辑

try-catch语句是捕获异常用的,当你捕获异常的时候,程序是没有返回值的,这个时候就与你设定的返回值int类型冲突了,所以程序就会报错。
你只需要在try-catch外在加一个int类型的无效返回值即可!
另外再补充一下,你第一个语句是有逻辑错误的,while没有设置跳出条件,当报异常的时候程序会一直执行下去,造成死循环,如果不报异常,程序正常结束!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 10:51:17 | 显示全部楼层
连帅帅 发表于 2021-4-28 09:35
try-catch语句是捕获异常用的,当你捕获异常的时候,程序是没有返回值的,这个时候就与你设定的返回值int类 ...

感谢你的解答,我还有些不懂的地方,按照你的思路,我在try-catch外加一个无效返回值,没报错。同时我在catch中也加入一个return返回值也不会报错了。但现在有一个问题就是,我加入一个循环体,而在外界不加你所说的无效返回值,程序同样不报错了,这我就很疑惑了,循环逻辑这个是有问题,难道就是这个逻辑错误导致该方法没有报错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 11:51:24 | 显示全部楼层
继续探索中
将循环逻辑修改后,在主程序中调用运行

主程序调用

主程序调用
,发现达到想要的效果,但我想在方法中修改循环条件时又出现了问题

方法

方法

我在方法中定义一个bool类型的变量,将循环的条件改为定义的变量,结果又出现上述的错误

报错

报错

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 14:20:22 | 显示全部楼层    本楼为最佳答案   
暗中观察的猫 发表于 2021-4-28 10:51
感谢你的解答,我还有些不懂的地方,按照你的思路,我在try-catch外加一个无效返回值,没报错。同时我在c ...

首先,你要定位到,你这个程序有几种返回的情况:
  一种就是正常情况下,try没有捕获异常,程序正常执行,而try里面是有返回值的,所以没问题,其次就是catch里面,catch的意思是在捕获异常之后的处理方案,你在catch里面加上返回值,那么就不存在没有返回值的情况了,程序就不会报错了。
  而我在try-catch最外面加一个无效返回值,目的就是处理没有返回值的所有情况的出现,无论你这个程序有几种没有返回值的情况,到最后肯定会执行这个无效返回值,所以程序也不会报错。
  关于加上while程序就不报错了这个事情,你要理解程序的执行顺序,程序执行到while的时候,如果不报异常,返回值,正常执行,程序结束;但是如果报了异常,这将是一个死循环,也就不存在什么返回值的类型了,所以无论你定义为什么数据类型,程序都不会报错,因为永远到不了返回的哪一步。
  最后,关于try-catch的用法,还有一个关键字为finally,表示一定会执行的代码,建议你百度详细了解一下,毕竟知根知底才能百战不殆!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-28 15:14:07 | 显示全部楼层
连帅帅 发表于 2021-4-28 14:20
首先,你要定位到,你这个程序有几种返回的情况:
  一种就是正常情况下,try没有捕获异常,程序正常执 ...

好的,非常感谢,明白了为啥while加入后不报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-28 16:05:36 | 显示全部楼层
暗中观察的猫 发表于 2021-4-28 15:14
好的,非常感谢,明白了为啥while加入后不报错了

加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 19:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表