微智科技网
您的当前位置:首页常见异常

常见异常

来源:微智科技网
常见异常

1.java.lang.ArithmeticException 算术异常

2.java.lang.NullPointerException 空指针异常(常发生于 对象.XX() 而对象为空的情况下)

3.java.lang.ArrayIndexoutoBoundsException 数组下标越界异常 4.java.lang.ClassCastException 类型转换异常 5.java.lang.NumberFormatException 数字格式异常

6.java.lang.ClassNotFoundException 异常的解释是\"指定的类不存在\"。 7. java.lang.IllegalArgumentException 这个异常的解释是\"方法的参数错误\",比如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常

8. java.lang.IllegalAccessException

这个异常的解释是\"没有访问权限\",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。

ArithmeticException(除数为0的异常), BufferOverflowException(缓冲区上溢异常), BufferUnderflowException(缓冲区下溢异常), IndexOutOfBoundsException(出界异常), NullPointerException(空指针异常), EmptyStackException(空栈异常), IllegalArgumentException(不合法的参数异常), NegativeArraySizeException, NoSuchElementException, SecurityException, SystemException, UndeclaredThrowableException

package com.pub.exception;

import java.sql.SQLException;

import org.springframework.jdbc.CannotGetJdbcConnectionException;

import com.util.StringUtils; /** * *

* 功能描述:异常工具类 *

*

* @author zhuyoulong * @create_date 2008-10-27 * @version $ Revision: 1.0 */

public final class ExceptionUtils {

public static final String lineSeparator = System .getProperty(\"line.separator\");

/** * *

* 功能描述:该类不需要实例化 *

*

* @constructor 方法 */

private ExceptionUtils() { }

/** * *

* 功能描述:格式化输出一个错误的信息 *

*

* @param e * @return

* @author:zhuyoulong

* @update:[日期YYYY-MM-DD][更改人姓名][变更描述] */

public static String getMessage(Exception e) { String result = null; try {

if (e instanceof SQLException) {

// ---------------------------------

// 如果该例外是数据库发生的例外,

// 则调用parseSQLException来解析例外 java.lang.NumberFormatException

// ---------------------------------

result = parseSQLException((SQLException) e); } else if (e instanceof java.lang.NullPointerException) {

result = \" 当应用程序试图在需要对象的地方使用 null 时,抛出该异常。 :NullPointerException\"; }else if (e instanceof org.springframework.jdbc.CannotGetJdbcConnectionException) {

result = \" 服务器端数据库连接不上时,抛出该异常。 :CannotGetJdbcConnectionException\";

} else if (e instanceof CannotGetJdbcConnectionException) {

result = \" 网络没有连接或网络中断 :

CannotGetJdbcConnectionException\";

} else if (e instanceof java.lang.NumberFormatException) {

result = \" 数字转换异常 :NumberFormatException\"; } else if (e instanceof java.lang.ClassCastException) {

result = \" 当试图将对象强制转换为不是实例的子类时,抛出该异常 :ClassCastException\";

} else if (e instanceof java.lang.ClassNotFoundException) {

result = \" 类没找到时,抛出该异常 :ClassNotFoundException\";

} else if (e instanceof java.lang.IllegalAccessException) {

result = \" 当应用程序试图创建一个实例(而不是数组)、设置或获取一个字段,或者调用一个方法,\"

+ \"但当前正在执行的方法无法访问指定类、字段、方法或构造方法的定义时,抛出 :IllegalAccessException\";

} else if (e instanceof java.lang.IllegalArgumentException) {

result = \" 抛出的异常表明向方法传递了一个不合法或不正确的参数。 :IllegalArgumentException\";

} else if (e instanceof java.lang.IndexOutOfBoundsException) { result = \" 指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。 :IndexOutOfBoundsException\";

} else if (e instanceof java.lang.NoSuchFieldException) {

result = \" 类不包含指定名称的字段时产生的信号(bean中不存在这个属性)。 :NoSuchFieldException\";

} else if (e instanceof java.lang.NoSuchMethodException) {

result = \" 在类中无法找到某一特定方法时,抛出该异常。 :NoSuchMethodException\";

} else if (e instanceof java.lang.StringIndexOutOfBoundsException) {

result = \" 此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。对诸如 charAt 的一些方法,\"

+ \"当索引等于字符串的大小时,也会抛出该异常。 :StringIndexOutOfBoundsException\";

} else if (e instanceof java.lang.StringIndexOutOfBoundsException) {

result = \" 此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。\"

+ \"对诸如 charAt 的一些方法,当索引等于字符串的大小时,也会抛出该异常。 :StringIndexOutOfBoundsException\";

} else if (e instanceof java.lang.UnsupportedOperationException) { result = \"当不支持请求的操作时,抛出该异常 。 :UnsupportedOperationException\"; }

else if (e instanceof java.lang.ArrayIndexOutOfBoundsException) { result = \" 用非法索引访问数组时抛出的异常。如果索

引为负或大于等于数组大小,则该索引为非法索引 :ArrayIndexOutOfBoundsException\"; } else if (e instanceof java.lang.ArrayStoreException) {

result = \" 试图将错误类型的对象存储到一个对象数组时抛出的异常 :ArrayStoreException\";

} else if (e instanceof java.lang.SecurityException) {

result = \"由安全管理器抛出的异常,指示存在安全侵犯。 :SecurityException\"; }

else {

// --------------------------------- // 取得错误信息

// --------------------------------- String message = e.getMessage();

if (message == null || message.length() == 0) { // ---------------------------------

// 如果错误为空,一般可以认为是空指针例外

// --------------------------------- result = \"NullPointerException!\"; } else {

// ---------------------------------

// 如果错误信息不为空,则格式化错误信息。 // --------------------------------- result = formatMessage(message); } }

} catch (Exception e1) {

// ---------------------------------

// 如果这里发生的例外。则什么也不处理 // --------------------------------- }

return result; }

/** * *

* 功能描述:解释某个数据库错误发生的原因,
* 适用于Oracle,这个方法应该抽象出来
*

*

* @param e * @return

* @author:zhuyoulong

* @update:[日期YYYY-MM-DD][更改人姓名][变更描述] */

public static String parseSQLException(SQLException e) { int code = e.getErrorCode(); String result;

result = \"错误代码为:\" + code + \",错误信息为:\"; String message = e.getMessage(); switch (code) { case 1:

result += \"主键重复!\"; break;

case 2:

result += \"名称重复\"; break;

case 904:

result += \"无效的SQL标识(列名错误?)\"; break;

case 911:

result += \"无效的SQL字符\"; break;

case 942:

result += \"表或者视图不存在\"; break;

case 1006:

result += \"绑定的变量不存在\"; break;

case 1400:

result += \"插入值不能为空!\" + formatMessage(message); break;

case 22:

result += \"系列生成器不存在!\"; break;

case 2292:

result += \"子记录发现,不能被删除!\" + formatMessage(message); break;

case 1722:

result += \"无效的数字\"; break; case 17004:

result += \"字段类型错误\";

default:

result += formatMessage(message); } // switch (code) return result; }

/** * *

* 功能描述:格式化消息,以适合JavaScript显示 *

*

* @param message * @return

* @author:zhuyoulong

* @update:[日期YYYY-MM-DD][更改人姓名][变更描述] */

private static String formatMessage(String message) { String result = null; try {

// --------------------------------- // 格式化错误信息

// ---------------------------------

result = StringUtils.replace(message, lineSeparator, \"\\\\\\n\"); result = StringUtils.replace(result, \"'\ result = StringUtils.replace(result, \"\\\"\ // --------------------------------- // 只取前100个信息串 // ---------------------------------

result = StringUtils.autoCutHZ(result, 100); } catch (Exception e) { }

return result; } }

因篇幅问题不能全部显示,请点此查看更多更全内容