博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异常处理(五)
阅读量:5788 次
发布时间:2019-06-18

本文共 2403 字,大约阅读时间需要 8 分钟。

异常处理

1)系统报错信息

try

            {

       1行:         Console.WriteLine("错误前");

       2行:         int i = Convert.ToInt32("ad");

       3行:         Console.WriteLine("错误后2");

       4行:         Console.WriteLine(i);

            }

            catch(Exception ex)

            {

        5行:        Console.WriteLine("数据错误:"+ex.Message+"堆栈数据"+ex.StackTrace);

            }

        6行:    Console.WriteLine("处理错误3");/就算数据出错,也能执行这一行,说明trycatch是将错误给抓出来,不影响后面的运行;但是在try里面的如果他前面有错误后面的将不会被执行;

说明:先执行第1行,执行第2行出错了,直接跳到第5行;第5行显示第2行出错的信息。在try里面的34行将不会被执行。第六行没有在try里面可以被执行;如果没有try……catch,当程序执行到第二行时出错,整个程序就崩了,直接不会运行。

注:try……catchtry里面的出错了,程序还会被执行,因为错误行不会被运行,转而代替错误行的是执行catch里面。但是try里面在错误行之后的也不会被执行了。try之外的可以被执行。

 

2)自定义报错信息

throw new Exception子自定义错误);

static void Main(string[] args)

        {

try

            {

                Age(200);

            }

            catch (Exception ex1)

            {

                Console.WriteLine("输入的年龄错误"+ex1.Message);

            }

}

static string Age(int age)

        {

            if (age < 0)

            {

                throw new Exception("你输入的年龄非法");//当调用message将会输出这里,这里是我们自己定义的数据错误处理结果;在系统自动报错里面输出的message是系统为我们找出错误的。而这里是我们自己定义的,也可以说是预先设定的可能出现的错误处理;

            }

            else if (age > 150)

            {

                throw new Exception("你是火星人吗?");

            }

            else

            {

                return "你是正常人";

            }

        }

3.其他信息的异常处理

OverflowException  获取异常的是否溢出;

DivideByZeroException 获取异常是否整除了零;

Exception 获取异常的输入是否合法;

if (tb_number1.Text != "" && tb_number2.Text != "")

            {

//在处理前先判断用户是否输入了值。

//节约系统开支(想下什么这里说这样做是为了节约系统开支)

                try

                {

                    //tb_number1tb_number2中获取要计算的字符

                    string txt1 = tb_number1.Text;

                    string txt2 = tb_number2.Text;

                    //将字符串转换为int类型

                    int num1 = int.Parse(txt1);

                    int num2 = int.Parse(txt2);

                    //计算,在计算的时候我们使用switch来判断用户是选择的哪一个运算符

                    int result; //该变量用来记录运算结果

                    switch (cb_flag.Text)

                    {

                        case "+":

                            result = num1 + num2;

                            break;

                        case "-":

                            result = num1 - num2;

                            break;

                        case "*":

                            result = num1 * num2;

                            break;

                        case "/":

                            result = num1 / num2;

                            break;

                        default:

                            result = 0;

                            break;

                    }

                    lbl_result.Text = result.ToString();

                }

                //当参数格式不符合调用的方法的参数规范时引发的异常。

                catch (FormatException fex)

                {

                    //MessageBox.Show(fex.Message); //直接弹出异常所携带的消息 

 

//弹出的警告框会让人厌恶所以我们可以使用下面的代码来改善用户体验

                    lbl_result.Text = fex.Message;  //让显示结果的label来显示提示。

                    lbl_result.ForeColor = Color.Red;//为了更显眼,让字体变为红色

                    return;

                }

                catch (OverflowException ofex)

                {

//溢出错误

                    MessageBox.Show(ofex.Message); //直接弹出当前捕获的异常所携带的消息

                    return;

                }

                catch (DivideByZeroException dze)

                {

//除零

                    MessageBox.Show(dze.Message); //直接弹出当前捕获的异常所携带的消息

                    return;

                }

                catch (Exception ex)

                {

//无效输入

                    MessageBox.Show(ex.Message); //直接弹出当前捕获的异常所携带的消息

                    return;

                }

            }

            else

            {

//如果没有输入完整的值,这里给出提示

                MessageBox.Show("请先输入有效的值");

                return;

            }

注:如果数据整除了零,那么就会触发异常处理的DivideByZeroException 对象,那么catch自然会将它抓出来的。

转载于:https://www.cnblogs.com/wenwei/archive/2011/10/14/2212446.html

你可能感兴趣的文章
问责IT风险管理:CIO需关注两个重点
查看>>
Winform打包发布图解
查看>>
PDF文件怎么编辑,超简单的方法
查看>>
EasyUI基础入门之Easyloader(载入器)
查看>>
Uva 839 Not so Mobile
查看>>
30款超酷的HTTP 404页面未找到错误设计
查看>>
程序猿必备 MyEclipse2013-2014系列
查看>>
java中ArrayList 、LinkList区别
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
利用rand7()构造rand10()
查看>>
MySQL 备份与恢复
查看>>
吃午饭前,按书上的代码写会儿--Hunt the Wumpus第一个版本
查看>>
easyui中combobox的值改变onchang事件
查看>>
Eclipse魔法堂:任务管理器
查看>>
一周自学动态站点设计
查看>>
poj万人题
查看>>
Android-Universal-Image-Loader
查看>>
Android 从硬件到应用:一步一步向上爬 4 -- 使用 JNI 方法调硬件驱动
查看>>
TEST
查看>>
loadrunner 的Administration Page里面设置
查看>>