ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Parse / TryParse / Convert三种转换出现的异常

Parse / TryParse / Convert三种转换出现的异常 转换Parse / TryParse / Convert重点看异常行为三种方式把字符串变成数字区别全在失败时的行为。Parse失败就抛异常int n1 int.Parse(123); // 123正常 int n2 int.Parse(abc); // FormatException int n3 int.Parse(null); // ArgumentNullException int n4 int.Parse(99999999999); // OverflowException超出 int 范围不捕获的话程序直接崩。TryParse失败不抛异常返回 falseint value; bool ok1 int.TryParse(123, out value); // ok1 truevalue 123 bool ok2 int.TryParse(abc, out value); // ok2 falsevalue 0不抛异常 bool ok3 int.TryParse(null, out value); // ok3 falsevalue 0 bool ok4 int.TryParse(99999999999, out value); // ok4 falsevalue 0out的意思是这个方法除了返回值还能通过value这个变量「带出」一个结果。调用方必须传一个变量接住方法内部必须给它赋值。实际用法永远配ifConsole.Write(请输入年龄); string input Console.ReadLine(); if (int.TryParse(input, out int age)) { Console.WriteLine(你的年龄是 age); } else { Console.WriteLine(输入的不是合法数字); }Convert能容忍 null但不能容忍格式错int c1 Convert.ToInt32(123); // 123 int c2 Convert.ToInt32(null); // 0 ← null 当 0 处理不抛异常 int c3 Convert.ToInt32(abc); // FormatException int c4 Convert.ToInt32(99999999999); // OverflowException // Convert 的另一个用途数值类型之间互转且是四舍五入 int r1 Convert.ToInt32(2.6); // 3 int r2 (int)2.6; // 2 强转是截断不是四舍五入⚠️ Convert 的舍入是银行家舍入四舍六入五成双Convert.ToInt32(2.5); // 2 五入到偶数 2 Convert.ToInt32(3.5); // 4 五入到偶数 4 Convert.ToInt32(2.4); // 2 Convert.ToInt32(2.7); // 3异常行为对照表输入int.Parseint.TryParseConvert.ToInt32123123true输出 123123abc抛 FormatExceptionfalse输出 0抛 FormatExceptionnull抛 ArgumentNullExceptionfalse输出 00不抛99999999999抛 OverflowExceptionfalse输出 0抛 OverflowException数值 2.6不接受不接受3银行家舍入
返回列表