在Thoughtaworks重新捡起JAVA,做story时经常碰到的异常,不断遇到时不断加入

云里雾里用了几年C#,说实话只是用它做项目而已,你要是问我它里面那些自动生成是怎么来的,控件定制是怎么实现的,好吧我也没搞清。Thoughtaworks是我走出校门的第一份工作,培训使用Java实现BBS一些功能。对于我们这样知其然不知其所以然的Dev来说功能实现不是很困难,困难的事调试测试了或跑程序是出的异常,下面说说我已经遇到的一些,现在还少,以后遇到了继续加。

蓝色部分为转载来科普一下自己的
   异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。 
    Error和RuntimeException及其子类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。 
每个类型的异常的特点 
   1.Error体系 Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。如果出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以,在进行程序设计时,应该更关注Exception体系。 
   2.Exception体系 Exception体系包括RuntimeException体系和其他非RuntimeException的体系 
   3.RuntimeExceptionRuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。 
   4 其他(IOException等等)这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。 
与C++异常分类的不同 
   1.其实,Java中RuntimeException这个类名起的并不恰当,因为任何异常都是运行时出现的。(在编译时出现的错误并不是异常,换句话说,异常就是为了解决程序运行时出现的的错误)。 
   2.C++中logic_error与Java中的RuntimeException是等价的,而runtime_error与Java中非RuntimeException类型的异常是等价的。 



1. java.lang.nullpointerexception 
    空指针异常—当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。
     这个东西我经常遇到,源于我不好的变成习惯。有时声明了很多变量却忘了将他们一个个初始化,一开始总犯,现在记住了。。。切记,声明和初始化可以放在一行,但若是声明的时候没有调用new()初始化,特别是非住类型的Object,一定要初始化~~

2.java.lang.ArrayIndexOutOfBoundsException
   数组存储异常。当向数组中存放非数组声明类型对象时抛出。
    数组越界我们都不陌生,但我遇到这个异常是在写测试的时候,正在写的测试存在对下级的依赖,写了stub,但是跑的时候米有用啊!什么情况,盯着它良久,看着抛给我的异常,LinkList用到index 1,但是LinkList长度为0。然后发现,先在测试的Controllor这层没有下层Service的set方法,以至于我对Service做了什么studControllor都是不知道的,好吧,有点像上面初始化问题的延伸。提醒自己切记即使是stub掉的依赖你也得传进去才行。。。

3.javax.servlet.ServletException
   这是数据库存储上的异常
    这个问题是在运行完测试已经跑功能的时候粗现的,所以即使是测试过了也可能会出幺蛾子的。为什么呢,打开mysql就会发现是插入了主键重复的数据,可以为你插入语句加上unipue,避免这一错误,当然谁有更好的办法要告诉我。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值