java中常见的异常!

来源:互联网 发布:北京教育软件开发公司 编辑:程序博客网 时间:2024/06/05 20:01

最近在写项目的过程中,总是遇到各种异常bug!搞得每次调bug都花费很多时间,所以今天特地花点时间总结一下一些常见的异常,供大家参考!有什么地方说的不是很对的,需要修改的可以私信我或者评论!

首先我们针对异常,应该追根溯源到源代码,这样我们理解的才更深刻点!所有的异常都是继承Java.lang.Throwable类;

Throwable类有两个直接子类就是errorexception下面我们就来介绍errorexception

一:error:error从字面上理解就是错误的意思,他指的是jvm(java虚拟机)级别的错误,我们程序员无法处理!

二:exception:exception又分受检异常和非受检异常!那么问题又来了,那什么是受检异常和非受检异常呢!

受检异常指的是由一些外部因素引起的异常,程序必须处理这些异常;

非受检异常指的是由于程序员逻辑出现问题造成的异常,

java编译器不强制要求处理(指的是编译期可以处理可以不处理,但是运行期肯定需要处理的)!

接下来我们看看受检异常和非受检异常都有哪些最常见的异常类:

受检异常1.FileNotFoundException:指的是文件找不到异常,出现这类问题首先看看你的文件名陈写正确没有

或者是你的路径有问题!

导致他找不到  

         2:IOException:指的是IO流异常,这类问题一般就是在文件图片上传下载的时候,代码某些地方逻辑有问题

或者粗心大意写错代码导致的,报的异常也会明确指示哪里出错,仔细找找

3:SQLException:指的是sql语句异常,这类问题不用看,仔细检查自己的代码的sql语句,看看是数据库名字写错

或者是列名写错,亦或者是你的占位符的顺序写错了,及你的列明是否与数据库表名是否一致(其实解决这类问题的最好

办法就是先将sql语句在数据库写好然后在复制过来,保证不会错)。

4.InterruptedException:指的是中断异常,这类问题一般是在java线程中遇到的,当线程调用wait()、sleep()

、join()等方法的时候,就会抛出InterruptedException异常(例如:子线程调用sleep方法等待5秒,而单元测试主线程

没有设置sleep方法,就会快速执行完毕,强行打断子线程的执行,就会报错误,解决方法就是主线程也设置sleep方法时长

长于5秒就可以了)。

非受检异常:

1.NullPointerException:空指针异常,这是大家再熟悉不过的异常了,这类问题就是你设置的参数的值没有

传进来,java会明确提示错误在哪一行,自己debug调试一下就知道了!

2.ClassCastException:说得通俗点就是类型转换异常(不兼容),这类问题常出现于继承中,比如:子类

和父类的转换过程(也可以说是向下转型,打个比方狗是动物,但是动物不一定是狗有可能是其他任意一种动物)。

3.ArrayIndexsOutOfBoundsException:顾名思义就是数组下标越界错误,这类问题常出现在数组扩容上

(解决数组扩容数组下标越界:你可以把数组空间设置大点,不让他频繁扩容;亦或者吧java虚拟机的堆栈

空间设置大点)或者是遍历数组的时候不要写小于某个值,要写小于数组.length的长度所以大家要注意了!

 4.ArithmeticException:算法异常,这类错误就是常识问题了最简单就是例如:3/0=多少,零不能做除数!

  5.IllegalArgumentException:非法参数异常,这类问题就是参数的类型错误,java会明确告诉你哪里错了的

(我遇到一个错误是在做登录注册的时候,利用Cookie做免登陆的时候,Cookile是不支持中文

所以必须这样Cookie cookie= new Cookie(URLEncoder.encode(stu.getUsername(), "utf-8"), stu.getStu_password())写,

里面的两个是用户名和密码,像用户名是汉字必须转换字符编码)。

常见就这几种,当然还有堆溢出错误和栈溢出错误,这类问题就是你写的递归太深或者进入死循环!这类问题你可以看看你的逻辑是不是有问题,找到

并解决,优化代码,或者也可以设置java虚拟机的内存设大点。

咳咳咳!最后希望对大家有点帮助,如果有什么不足,可以和我讨论,大家一起进步!



原创粉丝点击