个人学习总结一异常
Java异常其实就是对程序运行中的不正常现象进行了对象的封装。
——异常体系 Throwable(该体系的特点在于可抛性,即可被throws和throw操作)
Error 一般是不可处理的
Exception 可以通过 try.catch.finally 处理
处理方式
——捕获异常:try.catch 直接处理可能出现的异常
——声明异常:throws声明告诉调用者可能的异常,暴露问题,让调用者自己处理处理异常
try
{
//需要被检测的代码
}catch(异常类 变量)
{
//处理方式
}
finally
{
//一定会执行的语句
}
对多异常的处理(在实际开发中异常的处理不是打印在控制台,而是写入硬盘的日志文件)
——在声明异常时建议声明的更加具体,以便于处理的更加具体,异常名直接用逗号连接
——声明几个异常,就用几个catch块
——如果catch块中的异常有继承关系,父类放在下面——自定义异常
自定义一个异常类,继承Exception(这样将可抛性也继承了下来)
throw和throws的比较
throw用在函数内部,throws用在函数上;
throw后跟着的是异常对象,只能跟一个;throws后可以跟着多个异常类,用逗号隔开。
自定义异常示例:
public class ExceptionTest
{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
int i = d.show(8, -2);
} catch (FuShuException e)
{
System.out.println(e.toString());
System.out.println("负数时"+e.getValue());
}
}
}
class Demo
{
public static int show(int x, int y) throws FuShuException
{
int b =0;
if(y<0)
{
throw new FuShuException("出现负数了", y);
}
return b = x/y;
}
}
class FuShuException extends Exception
{
private int value;
FuShuException(String str, int value)
{
super(str);
this.value = value;
}
public int getValue()
{
return value;
}
}
——Exception 和 RuntimeException
凡是继承Exception并在函数上抛出的异常,说明都是可以处理的;而继承RuntimeException的异常则不用声明,说明这种异常必定会导致程序停止,必须要修改代码。即Exception在编译时会被检测,RuntimeException则不会。
——finally
一定会执行的代码块,通常用于关闭资源。
可以这么使用:
/*没有catch,视为没有解决异常,必须在函数上声明
* try()
* finally()
*/
finally只有一种情况不会执行,System.exti(0)写在它之前,jvm退出。
。