【发布时间】:2020-07-16 06:23:34
【问题描述】:
我正在尝试使用 try catch 制作一个防错程序,但它没有按我的预期工作
double num;
Console.Write("Input a number: ");
try
{
num = Console.ReadLine(); // Don't mind this, I know this is a mistake
}
catch
{
Console.WriteLine("The value you entered is not a number!");
}
Console.Write(num); // Error use of unassigned local variables 'num'. why??
我想到的是程序会尝试将值分配给num。如果失败,则程序将显示自定义错误然后停止进程。否则,它会跳过catch,然后显示用户之前输入的值。相反,该程序不起作用,因为未分配 num。那么使用 try-catch 的正确方法是什么?
【问题讨论】:
-
将您的第一行更改为
double num = 0;。如果您希望程序停止,您可以使用 return 语句退出程序或使用throw语句抛出更具体的错误 -
尽管我很想知道您在问题中提到的更多信息答案显示自定义错误然后停止进程。 - 你所说的“停止进程”是什么意思?您希望该程序停止做什么?它将开始做什么?当它完成执行“catch”块中的代码时,你认为程序下一步会去哪里?我问这个是因为你提出问题的方式暗示了对 c# 程序如何流动的潜在误解,所以我想解决它
-
@CaiusJard 这是我成为自学成才程序员的危险。我只是总结我所看到的。我认为
catch是return;的替代品,所以我希望程序在遇到错误时停止进入下一步。我可能会以某种方式误解。 -
应该有更多的编译器错误,你必须把它们都包括在内。目前,您的问题是一个谜,如果不掌握所有细节,就很难回答。