其实,异常并不是那么难理解。——你不知道的异常(一)
来源:互联网 发布:怎么取消淘宝延迟收款 编辑:程序博客网 时间:2024/04/30 04:03
在做机房收费系统的时候,我用了抛异常的方法来解决这样一个问题:
登陆的时候,我U层调用B层的方法,返回值是boolean类型,但是在B层进行逻辑判断的时候,如果遇到没有此用户,则返回此字符串。这个与返回值是不一致的,所以我就想到了用抛异常这个方法。
但是,不管谁听到抛异常这个方法时,都会说同样一个问题,那就是效率。在执行逻辑判断的时候,当没有走抛异常和走抛异常又能有多大的区别呢?个人见解,肉眼几乎没办法识别出来。在某些时候,我们替计算机想的太多了,而没有替我们的用户着想。
试想看,如果在登陆的时候,你的返回值是boolean,那么只有两种结果,一种是登陆成功,进入系统,另一种就是登陆失败。但是在用户友好性方面就很不好,因为用户根本不知道是哪错了。
我还看到有人这样写,在B层给U层返回的时候,返回的是字符串,然后在U层用了个selectcase语句进行判断,亲亲,你这个U层和B层的耦合你有想一下么?这种程度的耦合算是哪一层的耦合呢?我个人感觉你是U层调用了B层的数据,这个可是内容耦合呀。如果不是,欢迎拍砖指明。
而抛异常只是什么呢?是你从B层往系统写入了一个东西,然后在U层从系统中读出来。这样巧妙的利用了.net的异常处理来解决耦合的问题。
说了这么多,那么异常到底是什么呢?如果一个系统有了异常会怎样?其实最最开始,我们都是害怕异常的产生的,所以在程序里都要有异常处理,以避免程序突然死掉。
可是异常确实是一个好东西,我个人是这样理解异常的:是一个万能的return语句。为什么这样说呢,因为遇到异常,程序后面的就都不再执行了,而是向上找异常处理语句,如果你程序里面没有异常处理语句,那么就有最后的杀手锏,系统异常处理程序(应该避免)。
异常的处理,我就用我自己的话来说吧。
其实异常,你可以看做一个轻气球,而异常的发生,就好像绳子突然断掉了,然后气球就开始往上飞(调用此函数的函数),直至遇到能够阻止他上升的地方为止。
而异常的处理你可以这样理解,一个是你在屋里面,一个是在外面。在屋里面就好比你自己进行了异常处理,气球飞起来了,那么上层调用函数是屋顶,屋顶会把气球抓住,但是屋顶是个暴脾气,看到这么不听话的气球就把他弄爆了。如果在外面,气球会一直往上升,没有人管,但是到达一定程度,就会因为气压的原因而爆掉。
所以不管异常你是怎样处理,最后都会释放掉(有点废话,呵呵)。
关于异常就介绍到这里,下篇说一下用异常和不用异常所消耗的时间对比。
- 其实,异常并不是那么难理解。——你不知道的异常(一)
- 异常处理对效率的影响——你不知道的异常(三)
- 我是这样利用异常的(解耦)——你不知道异常的那些事(二)
- 你所知道的并不是你真的知道 —— 程序语言的精髓
- 其实,你不快乐的根源,是因为你不知道要什么!
- 承认你的父母其实不那么爱你
- CUDA范例精解通用GPU架构-(2)其实写个矩阵相乘并不是那么难
- Java异常处理中你不知道的事
- 你不知道的JavaScript--Item27 异步编程异常解决方案
- 你不知道的Java笔记10--异常处理
- 你不知道的JS——札记(一)
- 细说IIS异常日志 — 你必须知道的功能
- 织梦重装漏洞其实并不是那么好利用
- 开发linux设备驱动程序并不是想象的那么难
- 成功并不是你想象的那么难
- 成功并不是你想像的那么难
- 你不知道的javascript(一)
- JAVA技术发展——你不知道的J2SE(一)
- Maven权威指南_笔记(1)
- android系统信息(内存、cpu、sd卡、电量、版本)获取
- int型和char型数据 以及int 与string的相互转换
- “记住密码“功能的正确设计
- 室内定位技术(三)——自有定位技术
- 其实,异常并不是那么难理解。——你不知道的异常(一)
- 类继承和类组合(内嵌类)初始化的不同
- 向上取整向下取整
- 对android软件进行系统升级
- acm中国剩余定理
- intel DPDK----一次颇为打击人的串讲
- C++标准库:智能指针auto_ptr
- 动态队列,链式队列 + 示意图
- Unix环境高级编程学习笔记(一) 初窥