1、在Java项目中经常遇到的异常情况

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件未找到异常:FileNotFoundException

文件已结束异常:EOFException

字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException

2、处理异常的原则

       1)不要丢弃异常,捕获异常后需要进行相关处理。如果用户觉得不能很好地处理该异常,就让它继续传播,传到别的地方去处理,或者把一个低级的异常转换成应用级的异常,重新抛出。
      (2)catch语句应该指定具体的异常类型。不要把不该捕获的异常也捕获了。
      (3)在finally里面释放资源。如果finally里面也会抛出异常,也一样需要使用try..catch处理。
      (4)不要把大量的代码塞在try...catch块里面,分离各个可能出现异常的语句并分别捕获异常。
      (5)由于异常可能导致输出的数据不完整,因此用户需要作出相应处理,至少应该提示该数据的不完整
3、几种异常的原因及解决方法
a、算术异常类:ArithmeticExecption
解决方法:查看程序中涉及到算术问题的代码,看是不是没有考虑到除0的情况。
 
b、空指针异常类:NullPointerException
解决方法:这个异常一般是方法内部成员没有赋值造成的。使用debug模式查看,会发现该成员的值显示的是Null.对null成员做任何操作都会报这个异常错误。所以在做之前需要做非空判断。
 
c、类型强制转换异常:ClassCastException
解决方法:一个类是数字类,而由于误操作,错误的将数字类向数字类转换改写成了数字类向字符串类的转换,从而产生了异常。大部分原因是因为强制转换或者是sql映射时发生了这个异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。
 
d、数组负下标异常:NegativeArrayException
数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。
 
e、数组下标越界异常:ArrayIndexOutOfBoundsException
解决方法:数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。仔细阅读源程序有关于涉及到数组的定义和使用,有没有出现数组的下标小于数组大小或者数组下标大于等于数组大小。
 
f、违背安全原则异常:SecturityException
安全异常。由安全管理器抛出,用于指示违反安全情况的异常。
 
g、文件未找到异常:FileNotFoundException

解决方法:可能是父路径缺乏,或者文件没有创建。可以加一个判断。.文件没创建

String localPath =path+name;

File file =new File(localPath);

try {

//假如文件不存在,需创建

if(!file.exists()){

file.createNewFile();

}

特别注意的是文件创建的是.TXT文本,要在文件名或者文件目录填写的时候,将文件名后缀加上,将.TXT加上

h、文件已结束异常:EOFException

EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致异常。

i、字符串转换为数字异常:NumberFormatException

解决方法: 主要原因是将用户提交的内容转换为整数或者浮点数时用户输入了其它非法字符。在需要进行转换的地方使用try/catch块捕获此异常然后提示用户输入合法数据。也可以看下边的错误堆栈,找出自己写的类在哪一行出现错误,然后定位的找到错误的行,在什么时候执行哪一条语句出现的错误,就可以相应的用try/catch捕获解决解决。

 
 

JAVA中常用的异常处理方法的更多相关文章

  1. 【Java】Java中常用的String方法

    本文转载于:java中常用的String方法 1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.len ...

  2. Java中常用的加密方法(JDK)

    加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些 ...

  3. [转载] Java中常用的加密方法

    转载自http://www.iteye.com/topic/1122076/ 加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的 ...

  4. JAVA中常用的异常处理情况

    1.java.lang.nullpointerexception程序遇上空指针 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者 ...

  5. java中常用的String方法

    1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.length); 输出的结果是字符串长度10. 2 ...

  6. java中常用的工具类(一)

    我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...

  7. java中常用的字符串的截取方法

    java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...

  8. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  9. java在acm中常用基础技巧方法

    java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input input-std @Frosero import java.util.*; public class Main { ...

随机推荐

  1. [php] 如何处理好autoload

    在有了诸如apc之类的cache之后,php的autoloader成为了需要认真考虑的性能点. 参见: http://stackoverflow.com/questions/4788452/does- ...

  2. Github开源人脸识别项目face_recognition

    Github开源人脸识别项目face_recognition 原文:https://www.jianshu.com/p/0b37452be63e 译者注: 本项目face_recognition是一个 ...

  3. H3C 主动方式建立连接过程

  4. linux tasklet工作队列

    工作队列是, 表面上看, 类似于 taskets; 它们允许内核代码来请求在将来某个时间调用 一个函数. 但是, 有几个显著的不同在这 2 个之间, 包括: tasklet 在软件中断上下文中运行的结 ...

  5. 1119 机器人走方格 V2 (组合数学)

    M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果.   Input 第1行,2个数M,N,中间用空格隔开 ...

  6. Java并发机制的底层实现原理之volatile应用,初学者误看!

    volatile的介绍: Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现 ...

  7. 【Git】git-filter-branch - Rewrite branches

    1.命令使用场景 ①Removing sensitive data from a repository(https://help.github.com/en/github/authenticating ...

  8. 彻底搞懂HTML5文件上传操作需要的相关资料

    https://developer.mozilla.org/zh-CN/docs/Web/GuideMDN Web Guide https://developer.mozilla.org/zh-CN/ ...

  9. Java泛型类特性

    在2004年末Java推出了Java5,其中提供了对泛型方法和类的支持,也围绕着泛型推出了一下特性,本章将对Java泛型进行综合的概括 1.泛型特性构件pre-Java 5 1.使用Object表示泛 ...

  10. centos服务器cpu百分之百,top查询不到之“-bash”

    把这条注释掉. [root@aaaa ~]# cat /etc/ld.so.preload #/usr/local/lib/libproc.so[root@aaaa ~]# 然后在top