zoukankan      html  css  js  c++  java
  • catch块中throw new Exception的意义。

    throw new Exception(String, Exception)

      throw new Exception(String)

      throw是明确地抛出异常

      MSDN:Exception (String, Exception) 使用指定错误信息和对作为此异常原因的内部异常的引用来初始化 Exception 类的新实例。

       在发现异常以后作一下记录异常信息然后在抛出异常,让客户知道有问题了,以便通知技术人员。因为程序异常以后就崩溃的机会很大,先记录问题下来再崩溃才行。

      捕获异常以后,再抛出一个新的异常。再抛出新异常之前,你可以对前面捕获的异常做一些操作,比如记录日志、获取异常信息然后写到新异常中

    int num = Convert.ToInt32(textBox1.Text);
    try
    {
        if (num == 0)
        {
            throw new ArgumentNullException("出现零!");
        }
        if (num == 1)
        {
            throw new Exception("出现壹!");
        }
    }
    catch (ArgumentNullException ex)
    {
        MessageBox.Show(ex.Message);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

       catch是用来处理错误,就是发生了错误时,会执行catch部分.注意:是"发生了错误时".

      但是, 在没有发生错误时, 你自己想引发错误怎么办呢? 可以使用throw语句来手工引发一个错误.

       比如上面这段程序, 你先画一个文本框,textBox1,一个按钮button1, 如果把这段代码放到button1的click事件里. 

       如果文本框中文本是0,引发一种错误,文本框文本是1时又引发另一种错误,并可采用不同的处理办法.

      我认为catch块里通常对附异常有三种办法:一种办法是,什么也不做,catch语句里只有空语句;另一种办法是,用messagebox之类的通知异常;还有一种办法是,throw 一个new的异常。

       用哪种办法取决于你希望如何处理这个异常。

       如果你想直接通知用户,用messagebox之类的就好了

       如果你想由调用这个函数的程序来处理,可以throw一个new

       如果你希望你的程序出了“这个”异常还正常运行,就像什么也没发生一样,你可以空语句。

       总之try catch是有意义和必要的,但你的程序如何catch就是你自己的想法喽。

       一般来说没有必要明确的throw出一个异常,异常应该是因为程序本身运行的问题而产生的,但是有两种情况:

       1. 测试的时候,比如说你不能真的模拟一个内存耗尽这个异常吧,那么只好明确地throw一个了。

      2. 自定义的异常需要明确的throw出来,因为满足这个条件往往是我们自己制定的规则不满足了。

  • 相关阅读:
    zabbix 配置发送邮件报警
    sql server 修改表结构语法大全
    SQL Server日期与字符串之间的转换
    Convert.ToDateTime(值),方法可以把一个值转化成DateTime类型。
    Oracle trunc()函数的用法
    Oracle job procedure 存储过程定时任务
    向数据库中插入一个DateTime类型的数据到一个Date类型的字段中,需要转换类型。TO_DATE('{0}','YYYY-MM-DD'))
    逗号分隔的字符串转换为行数据(collection)(续)
    Oracle中INSTR、SUBSTR和NVL的用法
    oracle中substr() instr() 用法
  • 原文地址:https://www.cnblogs.com/dudu837/p/1494013.html
Copyright © 2011-2022 走看看