java 异常处理
来源:互联网 发布:h3c 多个端口删除vlan 编辑:程序博客网 时间:2024/05/21 14:01
Throwable类是Java中所有错误或异常的父类。
Error和Exception是Throwable的两个直接子类。
Error--指应用程序不应该去处理捕获的一种严重问题,常表示系统级的错误,如内存溢出 。
Exception--指程序需要捕获,需要处理的异常,是一种设计或实现方面的问题。默认是IOException。
Exception分为两类:RuntimeException和IOException
常见的RuntimeException异常:
1.ArithmeticException 算数异常--如最常见的除数为0
2.ArrayindexOutOfBoundsException 数组下标越界异常,但需要遍历数组时,用foreach或者ArraryList可避免此异常。
3.ClassCastException 强制转换异常
4.ClassNotFoundException 找不到指定类异常,此类异常常发生于以下几种情况,
如:Class类中的forName方法
ClassLoader类中的findSystemClass方法
ClassLoader类中的loadClass方法
5.NullPointException 空指针异常,当应用程序试图在需要对象的地方使用null时,抛出此异常:
如:调用null对象的实例方法
访问或修改null对象的字段
将null作为一个数组,获得其长度
将null作为一个数组,访问或修改其元素值
将null作为Throwable值抛出
要避免此类异常可在定义引用类型变量就对其初始化,或者在使用此变量进行是否为空判断。
6.ArrayStoreException 数组存值异常--即元素类型不一致时抛出此异常,但若数组引用类型为Object则不会抛出此异常。
其他常见异常
1.IllegalAccessExcetion 非法访问异常--是当应用程序试图反射性地创建一个实例(而不是数组)、设置或获取一个字段,
或者调用一个方法,但当前正在执行的方法无法访问指定类、字段、方法或构造方法的定义时
抛出的异常。
此异常最常见是在有安全管理器下使用反射设置私有域的值。此时必须要使用setAccessible()修改
其可见性。一般而言,尽量避免使用反射来访问私有域。
2.FileNotFoundException 文件未发现异常--在试图打开指定路径名表示的文件失败时抛出的异常。在不存在具有指定路径
名的文件时,该异常有FileInputStream、FileOutputStream和ReadomAccessFile构造方法抛出。
若此文件存在,却由于其他原因不可访问,将抛出此异常。如打开一个只读文件进行写入。
要避免此类异常,可先通过File类的exists()方法来判断此文件是否存在。也可使用文件选择器,把
可操作的文件均罗列出来。
3.SqlException 数据库异常--提供关于数据库访问错误或其他错误信息的异常。通过此异常可知道:
a.描述错误的字符串;
b."SQLstate"字符串,该字符串遵守XOPEN SSQLstate约定或SQL:2003约定
c.特定于每个供应商的整数错误代码。
d.到下一个Exception的链接
e.因果关系,可查出任何导致此SQLException的原因
对异常的处理
throw:
使用throw关键字可以在方法体中抛出异常。该异常既可以使系统预定义异常,也可是用户自定义异常;
throw总是出现在函数体中,用来抛出一个具体异常。程序会在throw语句后立即终止,它后面的语句执
行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子
句的try块:
throw 异常对象;
此时要抛出异常必须要应用在方法体中。
throws:
使用throws关键字可能会抛出异常;该异常既可以使系统预定义异常,也可是用户自定义异常;
throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception
子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是
Error或 RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序的正常部分中
是不期待出现的。 如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的
类型。
[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
注:异常类可以声明多个,用逗号分割。
throw和throws的区别:
1.前者在方法体中使用,是一个语句,用于抛出具体的异常;后者在声明方法时使用,是一个方法,用于声明可能抛出的异常。
2.前者不能单独使用,要么和try-catch-finally配套,要么和throws配套;后者可单独使用。
3.使用前者,则一定会抛出异常,使用后者则可能会抛出异常
4.程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻
找含有与其匹配的catch子句的try块。
- 【java】java异常处理
- java异常和异常处理
- Java 异常及异常处理
- java异常与异常处理
- Java异常处理-----自定义异常
- Java异常与异常处理
- java异常及异常处理
- Java 异常与异常处理
- Java异常与异常处理
- Java异常及异常处理
- Java异常处理--自定义异常
- JAVA异常之异常处理
- Java异常处理-----自行处理
- Java异常处理-----抛出处理
- Java异常处理-----抛出处理
- java异常处理
- java 异常处理分析
- java异常处理
- JVM内存管理------垃圾搜集器参数精解
- 外边距塌陷之clearance
- pat甲级1009. Product of Polynomials (25)
- 转换流(字符) 带缓冲的字符流 FileReader(字符流)
- 博客搬迁
- java 异常处理
- Sizeof与Strlen的区别与联系
- BFC的形成条件和特性分析
- 安装nginx
- URL的组成格式
- LintCode-克隆二叉树
- 《机器学习实战》学习笔记---开发机器学习应用程序的基本步骤
- nginx 命令
- hdoj-2043-密码(解题报告)