文档章节

throw new Exception

QGlaunch
 QGlaunch
发布于 2015/06/16 11:59
字数 681
阅读 41
收藏 1


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出来,因为满足这个条件往往是我们自己制定的规则不满足了。



本文转载自:http://blog.csdn.net/wsz1z154/article/details/7727224

共有 人打赏支持
QGlaunch
粉丝 4
博文 71
码字总数 12355
作品 0
朝阳
Zephir-异常处理

Zephir异常处理异常处理 异常处理机制 Zephir可以处理低级的异常,提供跟PHP类似的函数式异常处理方法。当一个异常被抛出时,需要使用一个catch语句来捕获错误并允许用户自由处理错误。 Zeph...

碳素云信息技术
2016/03/05
5
0
php使用openssl来实现非对称加密

使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。 安装openssl和php的openssl扩展 生成私钥:openssl genrsa 用于生成rsa私钥文件,生成是可以指定...

edgeto
2017/10/22
0
0
PHP学习笔记7:错误和异常处理

读《PHP和MySQL Web开发》笔记合集: http://my.oschina.net/bluefly/blog/478580 1、异常处理概念 1)异常处理在 try 代码块被调用执行 try { //code goes here } 2)PHP中,异常必须手动抛...

slyso
2015/10/26
0
0
zephir-(12)php函数和异常处理

先在这里感谢各位zephir开源技术提供者 经过了一个多月的学习,zephir的文档译文和基础讲解也将近尾声了,后面的内容最为重要也希望和大家一同更好的学习交流,本节的内容只要是讲解zephir是怎么...

喵了_个咪
2016/03/12
68
0
如何应用Java的throw验证数据

5.2.5 灵活应用throw Scanner类验证数据的方法,和包装类的方法,如parseDouble()等,只是验证数据是否合法类型,或者对合法数据进行数值转换,但不能验证数据值是否超出规定的应用范围。例如...

高永强
2009/07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Maven 项目中依赖的搜索顺序

ettings_mirror 的优先级高于 central settings_profile_repo 优先级高于 settings_mirror settings_profile_repo 优先级高于 pom_repositories settings_profile_repo 优先级高于 pom_prof......

xingyu4j
22分钟前
2
0
改变maven项目的名称

pom.xml <groupId>com.soft.xxx</groupId><artifactId>xxx</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>xxx Maven Webapp</name><build>......

1713716445
23分钟前
2
0
windows下按照RabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平...

zhaochaochao
23分钟前
2
0
10个PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的10个开源的Php比特币项目,将有助于你了解在自己的应用中如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方法...

笔阁
31分钟前
18
0
MyBatis级联探讨

数据模型 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper name......

职业搬砖20年
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部