当前位置:文档之家› 空指针异常

空指针异常

空指针异常
空指针异常

空指针异常产生的主要原因如下:

(1) 当一个对象不存在时又调用其方法会产生异常

obj.method() // obj对象不存在

(2) 当访问或修改一个对象不存在的字段时会产生异常

obj.method() // method方法不存在

具体情况如下:

空指针错误(https://www.doczj.com/doc/191573867.html,ng.NullPointerException)

使用基本的Java数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的Java数据类型(double,float,boolean,char,int,long)一般不会引起空指针异常。

由此可见,空指针异常主要跟与对象的操作相关。

下面先列出了可能发生空指针异常的几种情况及相应解决方案:

情况一:不管对象是否为空就直接开始使用。

(JSP)代码段1:

out.println(request.getParameter("username"));

描述:

代码段1的功能十分简单,就是输出用户输入的表域"username"的值。

说明:

看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。但是,如果某个用户在输入数据时并没有提供表单域"username" 的值,或通过某种途径绕过表单直接输入时,此时request.getParameter("username")的值为空(不是空字符串,是空对象 null。),out对象的println方法是无法直接对空对象操作,因此代码段1所在的JSP页面将会抛出

"https://www.doczj.com/doc/191573867.html,ng.NullPointerException"异常。

情况二:即使对象可能为空时,也调用https://www.doczj.com/doc/191573867.html,ng.Object或Object对象本身的一些方法如toString(), equals(Object obj)等操作。

(JSP)代码段2:

String userName = request.getParameter("username");

If (userName.equals("root"))

{....}

描述:

代码段2的功能是检测用户提供的用户名,如果是用户名称为"root"的用户时,就执行一些特别的操作。

说明:

在代码段2中,如果有用户没有提供表单域"username"的值时,字符串对象userName为null值,不能够将一个null的对象与另一个对象直接比较,同样,代码段2所在的JSP页面就会抛出(https://www.doczj.com/doc/191573867.html,ng.NullPointerException)空指针错误。

(JSP)代码段3:

String userName = session.getAttribute

("https://www.doczj.com/doc/191573867.html,ername").toString();

描述:

代码段3的功能是将session中https://www.doczj.com/doc/191573867.html,ername的值取出,并将该值赋给字符串对象 userName。

说明:

在一般情况下,如果在用户已经进行某个会话,则不会出现什么问题;但是,如果此时应用服务器重新启动,而用户还没有重新登录,(也可能是用户关闭浏览器,但是仍打开原来的页面。)那么,此时该session的值就会失效,同时导致session中的https://www.doczj.com/doc/191573867.html,ername的值为空。对一个为 null的对象的直接执行toString()操作,就会导致系统抛出(https://www.doczj.com/doc/191573867.html,ng.NullPointerException)空指针异常。

解决方案:

为了确保进行操作或引用的对象非空,假若我们要对某对象进行操作或引用,我们首先去检查该对象是否已经实例化且不为空;并且在系统中加入针对对象为空时情况的处理。

如:采用String对象保存用户提交的结果;在如果涉及对象的操作时,先检测其是否为空后,检查到对象为空后,可再选择进行以下任一种处理方式:处理方式 1) 检查到对象为空时,设置对象值为空字符串或一个默认值;

处理方式 2) 检测到对象为空时,根本不执行某操作,直接跳转到其他处理中。

处理方式 3) 检查到对象为空时,提示用户操作有错误。

将代码段2按以上方式进行改写,得到:

方式1:

String userName = request.getParameter("username");

// 该变量值为空时,转化为默认空字符串

If (userName == null)

userName = "";

If (userName.equals("root"))

{..........}

方式2:

String userName = request.getParameter("username");

// 该变量值为空时,转化为默认空字符串,不执行有关操作。

If (usreName != null)

{

If (userName.equals("root"))

{..........}

}

方式3:

String userName = request.getParameter("username");

// 该变量值为空时,转化为默认空字符串,不执行有关操作。

If (usreName == null)

{ // 提示用户输入信息为空

}

实际中,上面提供到三种处理方式也同样适用于其他异常的处理:

异常处理方式 1) 检查到异常出现,设置对象值为空字符串或一个默认值;

异常处理方式 2) 检测到异常出现,根本不执行某操作,直接跳转到其他处理中。异常处理方式 3) 检查到异常出现,提示用户操作有错误。

总结至此,以后遇到更麻烦问题,会继续补充。

又到周末,祝大家周末心情愉快!

java所有运行时异常以及错误

算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException https://www.doczj.com/doc/191573867.html,ng.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。https://www.doczj.com/doc/191573867.html,ng.AssertionError 断言错。用来指示一个断言失败的情况。https://www.doczj.com/doc/191573867.html,ng.ClassCircularityError 类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。https://www.doczj.com/doc/191573867.html,ng.ClassFormatError 类格式错误。当Java 虚拟机试图从一个文件中读取Java 类,而检测到该文件的内容不符合类的有效格式时抛出。https://www.doczj.com/doc/191573867.html,ng.Error 、管路敷设技术通过管敷设过程中,要加强看护关于管路高术交底。管线敷设技术中包含线槽、管处理;同一线槽内,强电回路须同时进行检查和检测处理。、电气课件中调试对全部高中资试卷相互作用与相互关系,根据生产正常工况下与过度工作下都可以正常写重要设备高中资料试卷试验方案以及在事前掌握图纸资料、设备制造厂家技术资料,并且了解现场设备高中资料料试卷方案。、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷安全,并且尽可能地缩小故卷保护装置动作,并且拒绝动作,来器组在发生内部故障时,需要进行外部高中资料试卷主要保护装置。

空指针异常

空指针异常产生的主要原因如下: (1) 当一个对象不存在时又调用其方法会产生异常 obj.method() // obj对象不存在 (2) 当访问或修改一个对象不存在的字段时会产生异常 obj.method() // method方法不存在 具体情况如下: 空指针错误(https://www.doczj.com/doc/191573867.html,ng.NullPointerException) 使用基本的Java数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的Java数据类型(double,float,boolean,char,int,long)一般不会引起空指针异常。 由此可见,空指针异常主要跟与对象的操作相关。 下面先列出了可能发生空指针异常的几种情况及相应解决方案: 情况一:不管对象是否为空就直接开始使用。 (JSP)代码段1: out.println(request.getParameter("username")); 描述: 代码段1的功能十分简单,就是输出用户输入的表域"username"的值。 说明: 看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。但是,如果某个用户在输入数据时并没有提供表单域"username" 的值,或通过某种途径绕过表单直接输入时,此时request.getParameter("username")的值为空(不是空字符串,是空对象 null。),out对象的println方法是无法直接对空对象操作,因此代码段1所在的JSP页面将会抛出 "https://www.doczj.com/doc/191573867.html,ng.NullPointerException"异常。 情况二:即使对象可能为空时,也调用https://www.doczj.com/doc/191573867.html,ng.Object或Object对象本身的一些方法如toString(), equals(Object obj)等操作。 (JSP)代码段2: String userName = request.getParameter("username"); If (userName.equals("root")) {....} 描述: 代码段2的功能是检测用户提供的用户名,如果是用户名称为"root"的用户时,就执行一些特别的操作。 说明: 在代码段2中,如果有用户没有提供表单域"username"的值时,字符串对象userName为null值,不能够将一个null的对象与另一个对象直接比较,同样,代码段2所在的JSP页面就会抛出(https://www.doczj.com/doc/191573867.html,ng.NullPointerException)空指针错误。

Java中常见异常类型及分析

Java常见异常类型及原因分析 这里介绍几种常见的异常并对原因进行分析,包括: ●NullPointException异常; ● ClassCastException异常; ● ArrayIndexOutOfBoundsException异常; ●UnsupportedClassVersionError错误; ●NumberFormatExceptio异常 ●堆栈溢出和内存溢出。 1 NullPointException异常 顾名思义,NullPointerException是空指针异常。但是在Java中没有指针,怎么会有空指针异常呢? 在C++中,声明的指针需要指向一个实例(通过new方法构造),这个指针可以理解为地址。 在Java中,虽然没有指针,但是有引用(通常称为对象引用,一般直接说对象),引用也是要指向一个实例对象(通过new方法构造)的,从这种意义上说,Java中的引用与C++中的指针没有本质的区别,不同的是,处于安全的目的,在Java中不能对引用进行操作,而在C++中可以直接进行指针的运算,例如book++等。 所以这里的NullPointerException虽然不是真正的空指针异常,但本质上差不多,是因为引用没有指向具体的实例,所以当访问这个引用的方法的时候就会产生这种异常。例如下面的代码: String str = "这是一个测试用的字符串!"; System.out.println(str.length()); 这段代码没有问题,但是如果改成下面的代码: String str ; System.out.println(str.length()); 就会产生NullPointerException异常了,当然一般人不会犯这样低级的错误。 那这种异常通常是如何产生的呢?比较多见的是下面的两种情况: 1)把调用某个方法的返回值直接赋值给某个引用,然后调用这个引用的方法。在这种情况下,如果返回的值是null,必然会产生NullPointerException异常。例如: String userName=request.getParameter("userName"); if(userName.length()==0) ...... else ...... 如果request.getParameter("userName")的结果为null,则这里就会产生这种异常。 2)在方法体中调用参数的方法。这种情况下,如果调用方法的时候传递进来的值是null,也要产生NullPointerException异常。 要解决这种异常,只需要检查异常出现在第几行(通常在集成开发环境中会提示用户错误发生在第几行),然后查看调用了哪个对象的方法,然后检查这个对象为什么没有赋值成

java异常处理例题代码

App9_1.java:输出一个数组的所有元素,捕获数组下标越界异常和除娄为0异常。public class App9_1{ public static void main(String args[]){ int i; int[] a={1,2,3,4}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.println("5/0"+(5/0)); } } App9_2.java:使用try-catch-finall语句对程序中的异常进行捕获与处理。 public class App9_2{ public static void main(String args[]){ int i; int a[]={1,2,3,4}; for (i=0;i<5;i++){ try{ System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e){ System.out.print("捕获到了数组下标越界异常"); } catch(ArithmeticException e){ System.out.print("异常类名称是:"+e); //显示异常信息 } catch(Exception e){ System.out.println("捕获"+e.getMessage()+"异常!"); //显示异常信息 } finally{ System.out.println(" finally i="+i); } } System.out.println("继续!!"); } } App9_3.java:使用throw语句在方法中抛出异常。 public class App9_3{ public static void main(String args[]){ int a=5,b=0; try{ if (b==0) throw new ArithmeticException(); //抛出异常,不是必须的 else System.out.println(a+"/"+b+"="+a/b); //若不抛出异常,则运行此行

常见异常列表(精)

算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException https://www.doczj.com/doc/191573867.html,ng.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。 https://www.doczj.com/doc/191573867.html,ng.AssertionError 断言错。用来指示一个断言失败的情况。 https://www.doczj.com/doc/191573867.html,ng.ClassCircularityError 类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。 https://www.doczj.com/doc/191573867.html,ng.ClassFormatError 类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。 https://www.doczj.com/doc/191573867.html,ng.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应

被应用程序捕获的反常情况。 https://www.doczj.com/doc/191573867.html,ng.ExceptionInInitializerError 初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。 https://www.doczj.com/doc/191573867.html,ng.IllegalAccessError 违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。 https://www.doczj.com/doc/191573867.html,ng.IncompatibleClassChangeError 不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。 https://www.doczj.com/doc/191573867.html,ng.InstantiationError 实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常. https://www.doczj.com/doc/191573867.html,ng.InternalError 内部错误。用于指示Java虚拟机发生了内部错误。 https://www.doczj.com/doc/191573867.html,ng.LinkageError 链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。 https://www.doczj.com/doc/191573867.html,ng.NoClassDefFoundError 未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。 https://www.doczj.com/doc/191573867.html,ng.NoSuchFieldError 域不存在错误。当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误。 https://www.doczj.com/doc/191573867.html,ng.NoSuchMethodError

常见异常分析

其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部说明,在api里都可以查阅。算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException https://www.doczj.com/doc/191573867.html,ng.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。 https://www.doczj.com/doc/191573867.html,ng.AssertionError 断言错。用来指示一个断言失败的情况。 https://www.doczj.com/doc/191573867.html,ng.ClassCircularityError 类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。 https://www.doczj.com/doc/191573867.html,ng.ClassFormatError 类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合

类的有效格式时抛出。 https://www.doczj.com/doc/191573867.html,ng.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。 https://www.doczj.com/doc/191573867.html,ng.ExceptionInInitializerError 初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。 https://www.doczj.com/doc/191573867.html,ng.IllegalAccessError 违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。 https://www.doczj.com/doc/191573867.html,ng.IncompatibleClassChangeError 不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。 https://www.doczj.com/doc/191573867.html,ng.InstantiationError 实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常. https://www.doczj.com/doc/191573867.html,ng.InternalError 内部错误。用于指示Java虚拟机发生了内部错误。 https://www.doczj.com/doc/191573867.html,ng.LinkageError 链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。 https://www.doczj.com/doc/191573867.html,ng.NoClassDefFoundError 未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。 https://www.doczj.com/doc/191573867.html,ng.NoSuchFieldError

java中异常exception

at com.softeem.exceptions.ExceptionDemo.exceptionDemo(ExceptionDemo.java :16) at com.softeem.exceptions.ExceptionDemo.main(ExceptionDemo.java:101) 异常类型: 空指针异常 发生原因: 对为空的对象进行操作 解决方法: 对对象赋值 加判断不为空的判断 Exception in thread "main" https://www.doczj.com/doc/191573867.html,ng.ArithmeticException: / by zero at com.softeem.exceptions.ExceptionDemo.exceptionDemo2(ExceptionDemo.jav a:22) at com.softeem.exceptions.ExceptionDemo.main(ExceptionDemo.java:102) 异常类型: 数学异常 发生原因: 除数不能为0 解决办法: 修改除数 Exception in thread "main" https://www.doczj.com/doc/191573867.html,ng.ArrayIndexOutOfBoundsException: 10 at com.softeem.exceptions.ExceptionDemo.exceptionDemo3(ExceptionDemo.jav a:27) at com.softeem.exceptions.ExceptionDemo.main(ExceptionDemo.java:103) 异常类型: 数组下标越界 发生原因: 数组下标越界,引用数组的下标超过了数组长度-1 解决办法: 修改下标的值

java中常见的NullPointerException异常

java中常见的NullPointerException异常 下面列出了我们学习java时常出现的NullPointerException异常,以及它的解决办法 1,空指针错误https://www.doczj.com/doc/191573867.html,ng.NullPointerException 使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的JAVA数据类 型(double,float,boolean,char,int,long)一般不会引起空指针异常。由此可见,空指针异常主要跟与对象的操作相关。 下面先列出了可能发生空指针异常的几种情况及相应解决方案: 不管对象是否为空就直接开始使用。 (JSP)代码段1:out.println(request.getParameter("username")); 描述:代码段1的功能十分简单,就是输出用户输入的表域"username"的值。 说明:看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。但是,如果某个用户在输入数据时并没有提供表单域"username"的值,或通过某种途径绕过表单直接输入时,此时request.getParameter("username")的值为空(不是空字符串,是空对象null。),out对象的println方法是无法直接对空对象操作,因此代

码段1所在的JSP页面将会抛出"https://www.doczj.com/doc/191573867.html,ng.NullPointerException"异常。即使对象可能为空时,也调用https://www.doczj.com/doc/191573867.html,ng.Object或Object对象本身的一些方法如toString(), equals(Object obj)等操作。 (JSP)代码段2:String userName = request.getParameter("username"); If (userName.equals("root")) {....} 描述:代码段2的功能是检测用户提供的用户名,如果是用户名称为"root"的用户时,就执行一些特别的操作。 说明:在代码段2中,如果有用户没有提供表单域"username"的值时,字符串对象userName为null值,不能够将一个null的对象与另一个对象直接比较,同样,代码段2所在的JSP页面就会抛出 (https://www.doczj.com/doc/191573867.html,ng.NullPointerException)空指针错误。 (JSP)代码段3:String userName = session.getAttribute("https://www.doczj.com/doc/191573867.html,ername").toString(); 描述:代码段3的功能是将session中https://www.doczj.com/doc/191573867.html,ername的值取出,并将该值赋给字符串对象userName。说明:在一般情况下,如果在用户已经进行某个会话,则不会出现什么问题;但是,如果此时应用服务器重新启动,而用户还没有重新登录,(也可能是用户关闭浏览器,但是仍打开原来的页面。)那么,此时该session的值就会失效,同时

java常见错误集锦

java常见错误以及可能原因集锦 0、需要标识符 a) 不在函数内 1、非法表达式开始 b) 可能:丢失括号 . 2. no data found a) 可能:setInt(1,100)中,没有100这个值 3. 找不到符号 a) 可能:没导入包 4. 指定了无效URL a) 可能:数据库名或IP错误,即连接出错 5. 类路径没有找到 a) 可能: ClassNotFoundException: oracle.jdbc.driver.OracleDriver b) 原因: 一般是指包名写错,或者没有import包,或者没有在类路径中找到jar文件 c) 解决: 没有加载Oracle驱动jar,在.bash_profile中把ojdbc14.jar加进来 6. 空指针异常 a) 可能: 数据源错误比如数据库名或IP错误 7. 不能执行查询 a) 可能: 数据库中表的问题,比如列名不存在 8. invalid identity a) 可能: 列名出错 9. 若在数据库中创建了两个sequence ,运行时出现异常可能是先后执行了多次select 语句,导致与原有的序列号产生冲突 10. 表名或列名不存在 a) 可能:表不存在或者没有插入数据到表中 11. 不支持的类,类的版本错误 a) 可能:没有导入jdk5.0,或者编译器仍为1.4 12. MappingNotFoundException a) Maybe: In the Eclipse Not refersh , or not exist in the dirctory

13. HibernateException: /hibernate.cfg.xml not found a) Maybe1: hibernate.cfg.xml not in the root directory b) Maybe2: Could not parse configuration . c) resolve: database not connect or use another database 14. ConstraintViolationException a) Maybe: used a not true database 15. 驱动没有找到或者 JDBC Driver not found 可能:连接数据库的驱动jar包不存在或者版本不一致,比如将旧的版本换成新的会造成该类错误 16. 空指针异常, https://www.doczj.com/doc/191573867.html,ng.NullPointerException a) 可能1:数据库连接出错,比如在hibernate.cfg.xml中的数据错误会导致异常。 17. 数据插入异常,GenericJDBCException: could not insert a) 可能1:没有建立表或者表中没有任何数据 b) 可能2:插入数据后没有执行提交语句:commit 18. LazyInitializationException 或者延迟加载异常 a) 可能1:没有在查询语句中加fetch 19. IdentifierGenerationException a) 可能1:高位表没有初始化(比如hi_value中没有记录) 20. could not initialize a collection: [hibernate.entity.Role.modules#32768] Syntax error: Encountered "-" at line 1, column 132. a) 错误原因:红色字部分中“-”为非法字符,替换为module_role 21. could not insert collection rows: [hibernate.entity.Module.roles#1] 在Module.hbm.xml文件的如下配置中加入inverse=”true” 22.在部署Struts时,出现如下错误信息: HTTP Status 404 - Servlet action is not available type Status report message Servlet action is not available description The requested resource (Servlet action is not available) is not available. 问题原因: 1.、web.xml文件中未配置ActionServlet。 2、struts-config.xml文件未配置你要访问的Action。 3、你的jsp文件form标记中action属性的路径名称错误。 4、非以上三种情况。

java运行时异常类(精)

1. https://www.doczj.com/doc/191573867.html,ng.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话) 2. https://www.doczj.com/doc/191573867.html,ng.classnotfoundexception 这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package 的路径加上。 3. https://www.doczj.com/doc/191573867.html,ng.arithmeticexception 这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。 4. https://www.doczj.com/doc/191573867.html,ng.arrayindexoutofboundsexception 这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。 5. https://www.doczj.com/doc/191573867.html,ng.illegalargumentexception 这个异常的解释是"方法的参数错误",很多 j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。 6. https://www.doczj.com/doc/191573867.html,ng.illegalaccessexception 这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。 其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序

关于jsp中空指针的解决方法

空指指针 误https://www.doczj.com/doc/191573867.html,ng.NullPointerException 使用基本的Java数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的Java数据类型(double,float,boolean,char,int,long)一般不会引起空指针异常。 由此可见,空指针异常主要跟与对象的操作相关。 下面先列出了可能发生空指针异常的几种情况及相应解决方案:不管对象是否为空就直接开始使用。 (JSP)代码段1: out.println(request.getParameter( "username ")); 描述: 代码段1的功能十分简单,就是输出用户输入的表域"username "的值。 说明: 看上去,上面的语句找不出什么语法错误,而且在大多数情况下也遇不到什么问题。但是,如果某个用户在输入数据时并没有提供表单域"username "的值,或通过某种途径绕过表单直接输入时,此时request.getParameter( "username ")的值为空(不是空字符串,是空对象null。),out对象的println方法是无法直接对空对象操作,因此代码段

1所在的JSP页面将会抛出"https://www.doczj.com/doc/191573867.html,ng.NullPointerException "异常。 即使对象可能为空时,也调用https://www.doczj.com/doc/191573867.html,ng.Object或Object对象本身的一些方法如toString(),equals(Object obj)等操作。 (JSP)代码段2: String userName = request.getParameter( "username "); If (userName.equals( "root ")) {....} 描述: 代码段2的功能是检测用户提供的用户名,如果是用户名称为"root "的用户时,就执行一些特别的操作。 说明: 在代码段2中,如果有用户没有提供表单域"username "的值时,字符串对象userName为null值,不能够将一个null的对象与另一个对象直接比较,同样,代码段2所在的JSP页面就会抛出(https://www.doczj.com/doc/191573867.html,ng.NullPointerException)空指针错误。 (JSP)代码段3: String userName = session.getAttribute ( "https://www.doczj.com/doc/191573867.html,ername ").toString(); 描述: 代码段3的功能是将session中https://www.doczj.com/doc/191573867.html,ername的值取出,并将该值赋给字符串对象userName。 说明:

java基础异常Exception代码讲解总结

Java中的Exception 1异常相关概述 1.1 什么是异常 ?异常就是Java程序在运行过程中出现的错误。 ?前面接触过的空指针,数组越界,类型转换错误异常等 1.2 Throwable ?Throwable 类是Java 语言中所有错误或异常的超类。 ?只有当对象是此类(或其子类之一)的实例时,才能通过JVM 或者throw 语句抛出。 1.3异常的继承体系 1.3 JVM默认是如何处理异常的? ?jvm有一个默认的异常处理机制,就将该异常的名称、异常的信息、异常出现的位置打印在了控制台上,同时程序停止运行。

1.4 Java处理异常的两种方式 ?Java虚拟机处理 ?自己处理 1.5 为什么会有异常 因为你不知道未来会怎么样,需要做个准备(写代码也是,你需要对一些未知的东西做下处理),比如你去旅游,不知道会下雨还是出大太阳,你需要准备雨伞和帽子.如果下雨,我有雨伞可用,如果出大太阳,可以用帽子,也有可能天气刚刚好,雨伞和帽子都用不着,这叫白带。 1.6 回顾几个常见异常 2 try-catch 自己处理异常的两种方试

?try…catch…finally ?throws 2.1 try-catch异常处理方式 2.2 try-catch-catch 多个catch处理方式

2.3 try-catch-catch 多个异常-另一种写法 2.4 多个异常处理的一个注意事项 ?catch中父类的Exception只能放在最后面 ?catch一个原则,先由子类处理异常,子类不能处理异常,再由父类处理try { //1.有可能出现数组越界异常 int[] arr = {1,2,3}; System.out.println(arr[1]); //2.算术异常 int a = 10 / 2; //3.空指针异常 int[] arr1 = null; //NullPointerException np; System.out.println(arr1[0]); }catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界异常"); } catch (ArithmeticException e) { System.out.println("算术异常"); } catch (Exception e) { System.out.println("其它异常"); }

JAVA开发中遇到的问题和异常

========================================J2SE=================================== ==== 1. 形参中有可变数组参数时,可以直接在实参中,用逗号隔开来写上多个。 如void findUniqueResult(String hql, Object[] values){} ("from Vocation where name= and id=", "保3",(2)); 2. 一个Object[]的数组中可以同时存放各种类型,如String ,Long 3.如果要对boolean的属性使用EL表达式,要将其isXX()方法改成,getXXX(); 4.如何获取date的下一天? 先new Caledar的子类实例。 调用实例的(date)的方法将date转换成calendar类型. 调用,1);获取当前日历的下一天 调用();再将calendar转换成date类型。 5.比较list集合中是否有指定对象obj出错。 问题描述:list中明明有一个对象与obj完全一样,但是调用(obj) 方法始终返回false,for遍历这个集合中的对象与obj比较,是有一个对象与obj 相等的。 错误的原因:这个obj对象重写了hashcode与equals方法,去掉就可以了。并且集合的比较要用equals。 6. set<>可以用增强for来循环输出吗可以的,只不过输出的顺序与保存的顺序是不相同的。 ========================================J2EE=================================== ==== gramar constraints(XSD or DTD Schema) detected for the document警告 2. 在JSTL标签中使用EL表达式获取服务器传来的数据与页面数据比较时,要将页面中的数据放到${}内,放在外面不能比较。正确的写法是:${>5} 3.如何在jsp页面中获取当前action路径。 1)${}获取到的是跳转后的jsp的路径。 2)是在js中获取请求路径 3)<%=("referer") %> 可以获得action请求的完整路径,而不是当前地址栏的路径。 只是怎么通过EL表达式来取有参数的值呢? ${header['Referer'] } 4) <%=basePath%>获得的是项目的路径 ====前面的错误在于获取到的并不是当前地址栏中的路径

java常见异常

前几天看见关于java常见异常的文章,感觉挺有用,就收藏了,希望对朋友们有帮助。 1. https://www.doczj.com/doc/191573867.html,ng.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话) 2. https://www.doczj.com/doc/191573867.html,ng.classnotfoundexception 这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。 3. https://www.doczj.com/doc/191573867.html,ng.arithmeticexception 这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。 4. https://www.doczj.com/doc/191573867.html,ng.arrayindexoutofboundsexception 这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。 5. https://www.doczj.com/doc/191573867.html,ng.illegalargumentexception 这个异常的解释是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。 6. https://www.doczj.com/doc/191573867.html,ng.illegalaccessexception 这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。 其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,

在开发过程中总结出的常见的异常类

自己总结出来的一些常见的异常类: 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException https://www.doczj.com/doc/191573867.html,ng.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。 https://www.doczj.com/doc/191573867.html,ng.AssertionError 断言错。用来指示一个断言失败的情况。 https://www.doczj.com/doc/191573867.html,ng.ClassCircularityError 类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。 https://www.doczj.com/doc/191573867.html,ng.ClassFormatError 类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。 https://www.doczj.com/doc/191573867.html,ng.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。 https://www.doczj.com/doc/191573867.html,ng.ExceptionInInitializerError 初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。 https://www.doczj.com/doc/191573867.html,ng.IllegalAccessError

JAVA通用异常列表

空指针异常,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话) https://www.doczj.com/doc/191573867.html,ng.classnotfoundexception 这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。 https://www.doczj.com/doc/191573867.html,ng.arithmeticexception 这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。 https://www.doczj.com/doc/191573867.html,ng.arrayindexoutofboundsexception 这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。 https://www.doczj.com/doc/191573867.html,ng.illegalargumentexception 这个异常的解释是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如 g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。 https://www.doczj.com/doc/191573867.html,ng.illegalaccessexception 这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。 其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。关于异常的全部说明,在api里都可以查阅。

相关主题
文本预览
相关文档 最新文档