我正在学习C#课程并完成第二项任务。我已经能够完成代码了。 我唯一不能编码的是如何使用以及在哪里使用Try&抓住。由于我是C#的新手,我不知道如何编写它。
我已经搜索过解决方案,但大多数都在Java中。
任务是美国人应该进入桑拿浴室,桑拿浴室只能显示摄氏度。 您输入华氏度,它将转换为摄氏度。 桑拿温度为73-77摄氏度。
这是我的代码:
public static int FahrToCel(int fahr)
{
int cel = (fahr - 32) * 5 / 9;
return cel;
}
public static void Main(string[] args)
{
Console.WriteLine("Skriv in Fahrenheit: ");
int fahrenheit = int.Parse(Console.ReadLine());
//Användaren skriver in ett värde som lagras i fahrenheit
int celsius = FahrToCel(fahrenheit);
/* I celsius finns nu antal grader omvandlat från fahrenheit till celsius. */
/*Här får lowerTempLimit värdet 77
* & upperTempLimit = 77 */
int lowerTempLimit = 73;
int upperTempLimit = 77;
/* While-do loop som breaker efter en iteration.
*If satserna skriver utvärmen i bastun och säger till om temperatur ska sänkas eller höjas beroende på temperaturn i celsius.
* Om temperaturn är mellan 73 - 77 grader, så har bastun godtyckligt bra temperatur */
do
{
if (celsius < lowerTempLimit)
{
Console.WriteLine("Bastun är inte tillräckligt varmt. Värme i bastun {0}, skruva upp värmen", celsius);
}
else if (celsius > upperTempLimit)
{
Console.WriteLine("Bastun är för varmt. Värme i bastun {0}, skruva ner värmen", celsius);
}
else
{
Console.WriteLine("Bastun är tillräckligt varmt för att kunna basta. Värme i bastun {0}", celsius);
}
}
while (celsius < lowerTempLimit || celsius > upperTempLimit);
Console.Write("Press any key to continue . . . ");
Console.ReadKey();
}
答案 0 :(得分:2)
function regreshText(){
是一种顶级方法;它只能由操作系统调用。通常,顶级方法应该具有某种形式的异常处理。否则,代码中发生的任何异常都会传播到操作系统本身,这通常不会产生最友好的UI。
将顶级异常处理添加到控制台应用程序相对容易。
var var_all_names = $('#myTable td').children('select.allNames');
这是你能做的最基本的事情。您也可以考虑写入事件日志或应用程序调试日志,或者如果用户可能能够理解它,则提供其他信息。
此外,在某些情况下,您的代码可能会抛出异常而您希望处理它,即不仅仅是退出应用程序。在这些情况下,您还应该使用try块包装特定的风险区域。
现在在你的情况下,实际上很少有代码可以抛出异常(除了灾难性的东西,比如O / S耗尽内存或类似的东西)。唯一的确是
Main
你可以做到
public static void Main(string[] args)
{
try
{
//Put all of your code here
}
catch (System.Exception ex)
{
Console.WriteLine("A problem has occurred and the application will now exit. Details: {0}", ex.Message);
}
}
但你可以通过调用 int fahrenheit = int.Parse(Console.ReadLine());
来轻松替换它,这可以避免异常的可能性。这比将 //Don't do this
while (true)
{
try
{
int fahrenheit = int.Parse(Console.ReadLine());
break;
}
catch (FormatException ex)
{
Console.WriteLine("Nummer nicht gut!!!")
}
}
包装在自己的try块中更好;一个try块在这里会有点过分,并且可能会影响性能,这可能是一个常见的用例(用户不小心输入了非数字字符串)。
TryParse
如果您决定使用try / catch而不是TryParse,请注意捕获Parse
比抓住 int fahrenheit;
while (true)
{
if (int.TryParse(Console.ReadLine(), out fahrenheit)) break;
Console.WriteLine("Achtung! Nummer kaput!");
}
更好,因为您只想处理格式异常。另请参阅Why catch(Exception)
is bad。
答案 1 :(得分:0)
try-catch块用于捕获和处理异常。例如,您要求用户输入数字并输入字母。如果没有try-catch,当您尝试解析数字的输入,并且解析器遇到非数字时,它将停止并抛出异常。 try-catch允许程序拦截异常,优雅地处理它,并继续执行。 try块保存要尝试的代码,例如解析数字,catch块保存代码,以便在失败时执行操作。
答案 2 :(得分:0)
try-catch用于捕获代码中的异常并让您处理它(希望优雅地),而不仅仅是崩溃程序。 当用户输入数值时,我会有一个try-catch。当用户输入&#34; a&#34;你尝试解析一个数字?我已将它添加到您的下面,例如:
GET index/type/_search
{
"query": {
"bool":{
"must":[
{
"multi_match" : {
"query": "dinner sydney",
"fields": [ "title^3", "description" ],
"operator": "and"
}
},{
"match": { "publishStatus": "PUBLISHED"}
}
]
}
}
}
PS:public static void Main(string[] args)
{
Console.WriteLine("Skriv in Fahrenheit: ");
try
{
int fahrenheit = int.Parse(Console.ReadLine());
}
catch(Exception e)
{
//Do error handling i.e. prompt user for a valid number
}
//Användaren skriver in ett värde som lagras i fahrenheit
int celsius = FahrToCel(fahrenheit);
/* I celsius finns nu antal grader omvandlat från fahrenheit till celsius. */
/*Här får lowerTempLimit värdet 77
* & upperTempLimit = 77 */
int lowerTempLimit = 73;
int upperTempLimit = 77;
/* While-do loop som breaker efter en iteration.
*If satserna skriver utvärmen i bastun och säger till om temperatur ska sänkas eller höjas beroende på temperaturn i celsius.
* Om temperaturn är mellan 73 - 77 grader, så har bastun godtyckligt bra temperatur */
do
{
if (celsius < lowerTempLimit)
{
Console.WriteLine("Bastun är inte tillräckligt varmt. Värme i bastun {0}, skruva upp värmen", celsius);
}
else if (celsius > upperTempLimit)
{
Console.WriteLine("Bastun är för varmt. Värme i bastun {0}, skruva ner värmen", celsius);
}
else
{
Console.WriteLine("Bastun är tillräckligt varmt för att kunna basta. Värme i bastun {0}", celsius);
}
}
while (celsius < lowerTempLimit || celsius > upperTempLimit);
Console.Write("Press any key to continue . . . ");
Console.ReadKey();
}
是异常的最高形式,将捕获所有异常。在你的情况下,Exception
就足够了。
答案 3 :(得分:0)
感谢大家的帮助,我真的很感激。
在我的情况下,我将使用下面的代码,因为我的老师在谈论Try-Catch代码。
while (true)
{
try
{
fahrenheit = int.Parse(Console.ReadLine());
break;
}
catch (FormatException ex)
{
Console.WriteLine("Endast heltal kan matas in, försök igen!");
Console.WriteLine("\nSkriv in Fahrenheit grader: ");
}
}
这是我的最终代码:
public static int FahrToCel(int fahr)
{
int cel = (fahr - 32) * 5 / 9;
return cel;
}
public static void Main(string[] args)
{
int startTempLimit = 0;
int lowerTempLimit = 73;
int upperTempLimit = 77;
int celsius;
int fahrenheit;
do
{
Console.WriteLine("Skriv in Fahrenheit grader: ");
while (true)
{
try
{
fahrenheit = int.Parse(Console.ReadLine());
break;
}
catch (FormatException ex)
{
Console.WriteLine("Endast heltal kan matas in, försök igen!");
Console.WriteLine("\nSkriv in Fahrenheit grader: ");
}
}
celsius = FahrToCel(fahrenheit);
if (celsius < startTempLimit)
{
Console.WriteLine("Bastun är ej påslagen. Du måste sätta på bastun. Värme i bastu {0}C.", celsius);
}
else if (celsius < lowerTempLimit)
{
Console.WriteLine("Bastun är inte tillräckligt varm. Värme i bastun {0}C, skruva upp värmen", celsius);
}
else if (celsius > upperTempLimit)
{
Console.WriteLine("Bastun är för varm. Värme i bastun {0}C, skruva ner värmen", celsius);
}
else
{
Console.WriteLine("Bastun är tillräckligt varm för att kunna basta. Värme i bastun {0}C.", celsius);
}
}
while (celsius < lowerTempLimit || celsius > upperTempLimit);
}