/*
异常 是对 程序运行过程中可能出现的错误的封装
级别 一般错误 Exception 严重错误 Error
作用:暴露错误,对传入参数进行甄别
结构throws 异常类名——写在可能出现异常的方法声明后
try{可能出现错误的代码}
catch(异常类/变量){处理方式}——catch可以不写/可以有多个catch(类似于case),但处理完第一个问题之后就结束程序
finally即便catch中有return,仍然执行的部分,举例 取消与数据库的连接,释放资源
处理完问题后程序终止
若在方法内部出现throw关键字,
要么try,catch捕获异常,要么在可以方法声明throws 抛给调用者——对涉及该可疑代码的方法都要如此
异常类 越具体越好
实际操作时,在catch中使用输入输出流存储至文件日志中
自定义异常——对违反自己定义的规则时的处理
throws 和throw 的区别
位置 前者在方法声明上,后者在方法体中
后接 前者后接若干个异常类(逗号隔开),后者跟异常对象
方法内抛throw,方法声明要标识throws(RuntimeException的子类除外)
但是呢,若throw的异常对象在本方法内解决,即有了catch(){没抛},则不用声明
RuntimeException 若在方法体内抛出异常,方法上不用声明
若在方法上声明了,调用该方法的方法无需处理(try/抛)
定义:运行时错误,当到此错误时,运行中止,让程序员修改错误
*/
class NegativeException extends Exception
{
}
class Divide
{
int div(int x,int y)throws NegativeException
{
if(y<0)
throw new NegativeException();
return x/y;
}
}
class Divide_0_Exception
{
public static void main(String[] args)
{
Divide d=new Divide();
try
{
int r=d.div(4,-1);
}
catch (NegativeException n)
{
System.out.println("Have divided negative number");
}
System.out.println("Over");
}
}