回到目录

无论是.net还是java,在开发程序时都难免会用到throw关键字,对于初学者一般会认为它与try...catch捆绑在一起,这当然是错误的,事实上,throw的一个最重要的作用就是:

让程序告诉用户一些事情,这些事情一般是开发人员之前定义好的,如对于一个输入文本框,你需要输入给定数字,但如果输入的不是给定的数据范围,则可以通过throw告诉用户!

让程序告诉开发人员一些事情,这些事情一般是底层开发人员之前定义好的,如果一些业务规范,如果开发人员输入的不合法,程序就会抛出一个异常,以告诉表层开发人员!

下面是一个程序中的throw用法:

          if (vp.ContainsKey("flag")){int flagValue;int.TryParse(vp["flag"].ToString(), out flagValue);switch (flagValue){case 0:linq = linq.Where(i => i.EndTime > DateTime.Now);break;case 1:linq = linq.Where(i => i.EndTime <= DateTime.Now);break;case 2://...break;default:throw new ArgumentException("参数不正确");}}

上面的代码,由前台用户传入一个参数,这边于程序处理,这里不考虑扩展,所以使用了switch块(对于业务多变的情况下,我们可以使用策略模式,工厂模式去代替switch这个代码坏味道),当你输入的参数不到给定的case条件时,就会向上抛出异常,以告诉用户!当然默认情况下会以黄屏的样子出现,我们运营的系统,当然会做一些处理。

.net mvc为我们提供的实例项目,是这样使用throw关键字的,看代码:

      public bool ValidateUser(string userName, string password){if (String.IsNullOrEmpty(userName)) throw new ArgumentException("值不能为 null 或为空。", "userName");if (String.IsNullOrEmpty(password)) throw new ArgumentException("值不能为 null 或为空。", "password");return _provider.ValidateUser(userName, password);}

好了,对于throw的解说就到这里,今天做项目正好用到这个,所以就总结了一下,希望给你会带来一点点帮助,呵呵。

回到目录

基础才是重中之重~开发人员应用学会用throw相关推荐

  1. 基础才是重中之重~再说面向接口的编程

    回到目录 之前在我的文章中有对接口进行过讲解,但感觉讲的还是不够清晰,不够利针见血,这次我把面向接口的编程里,自认为比较核心的两点说一下: 接口详细介绍请看我的这篇文章 基础才是重中之重~为什么C#有 ...

  2. 基础才是重中之重~通过人类的生活来学习Delegate

    一个人(people),在他60岁之后,就宣布进入晚年了,在这个期间要多注意身体,多体检. namespace NET基础才是重中之重{/// <summary>/// 人类/// < ...

  3. 基础才是重中之重~类是怎么执行的

    回到目录 对于一个程序员来说,有必要知道一个概念的同时也解它的执行过程,这样对于写出更好更安全的程序是有帮助的. 大牛们不是一天就成为大牛的,而是经过一步一步的实践,不断的知识的积累才成为大牛的,呵呵 ...

  4. 基础才是重中之重~用好configSections让配置信息更规范

    对于小型项目来说,配置信息可以通过appSettings进行配置,而如果配置信息太多,appSettings显得有些乱,而且在开发人员调用时,也不够友好,节点名称很容易写错,这时,我们有几种解决方案 ...

  5. 开发人员需要学会持续性学习

    不知道你有没有这种感觉,刚出社会的年轻人,感觉就像一匹脱离缰绳的野马,是很兴奋,有很多的想法,同时这个阶段是稚嫩的,因为初入职场,什么都不懂,总归需要别人带一带.但是有的甚至已到中年,我们常说中年不惑 ...

  6. 基础才是重中之重~何为原子化操作

    占占定义: 原子化操作,操作原子化,这在软件开发中经常被听到,那到底什么是操作原子化呢,其实从字面上不难理解,原子化就是一体化,整体化,原子化操作就是将多个操作组合在一起,要么这个组合一起发生,要么一 ...

  7. 第二十二回  基础才是重中之重~ThreadStatic静态字段在每个线程里的唯一性

    static修饰符我们不会陌生,它代表静态,可以修饰你的类,方法,字段和属性等等,今天主要说一个为静态字段加ThreadStatic特性会给程序代来什么样的变化.静态字段static field,我更 ...

  8. 基础才是重中之重~方法override详解

    回到 目录 之所以写这篇文章,完全是因为这次代码审核,这次代码审核过程当中,出现了很多我认为基础知识不够扎实的问题,所以,打算把它们记录下来,共大家分享. 方法的override,即方法的覆写或者重写 ...

  9. 基础才是重中之重~DictionaryK,V里V的设计决定的性能

    回到目录 字典对象Dictionary<K,V>我们经常会用到,而在大数据环境下,字典使用不当可能引起性能问题,严重的可能引起内在的溢出! 字典的值建议为简单类型,反正使用Tuple< ...

最新文章

  1. 开发日记-20190504 关键词 汇编语言(三)
  2. Yii-upload- 用AJAX上传图片
  3. 安卓x86程序安装目录_电脑上的安卓系统体验
  4. 10 | 案例篇:系统的软中断CPU使用率升高,我该怎么办?
  5. BGP no-export
  6. php判断同一天,PHP判断两个时间戳是否在同一周同一月等 - YangJunwei
  7. 二:Java+SpringBoot框架使用(返回cookies信息的get接口开发)
  8. 《程序设计技术基础》第1-5章例程
  9. ENVI5.4新添加功能简介
  10. MongoDB (芒果)安装说明创建与插入数据
  11. camera基础概念之等效焦距 视场角的计算
  12. 高手揭密svchost.exe是什么进程
  13. MQ,究竟如何做到削峰填谷?
  14. java api接口_Java程序API数据接口
  15. Pohlig-Hellman算法求Elgamal算法私钥+大步小步法解决DLP(离散对数问题)
  16. 转载:2014 Top Security Tools as Voted by ToolsWatch.org Readers
  17. javascript面试题大全_Js基础面试题(附答案)
  18. PIP更新问题丨You should consider upgrading via the 'python -m pip install —upgrade pip' command.
  19. 10.11 学习记录
  20. 杨辉三角寄数列求和c语言,杨辉三角与高阶等差数列的求和

热门文章

  1. 计算机原理转移指令题,转移指令计算机原理.pdf
  2. python爬虫知识大全_Python爬虫入门有哪些基础知识点
  3. linux 解压tar.jz,linux系统压缩文件和解压缩命令
  4. android将拍摄的图片存入sd卡中,Android将图片保存至SD卡上
  5. arm linux 中断优先级,ARM中断处理过程
  6. hive转16进制unhex_Java 进制的转换
  7. 对某公司一次弱口令到存储型xss挖掘
  8. Java安全(一) : java类 | 反射
  9. Mysql union联合查询_Mysql联合查询union和union all的使用介绍
  10. 计算payload长度c语言,C语言0长度数组(可变数组/柔性数组)详解