声明异常:当程序员认为自己写的代码可能会出现bug时会抛出异常。
一.throws方法上抛出异常
class C{
public void show() throws Exception{ //在方法上thorws异常,方法里面可能会出现问题
Scanner input =new Scanner(System.in);
int a=input.nextInt();
}
}
调用该方法时:
class B{
public void test() throws Exception{
C c=new C();
//解决方案:1.继续抛出去,可以一直抛,main方法抛出去的异常由虚拟机处理,但最好解决了
c.show();
}
}
class B{
public void test() {
C c=new C();
//解决方案:2.自己处理了(解决了)
try {
c.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
1.try里面放可能会出现错误的代码
2.catch里面放出现错误的动作
3.还有一个关键字finally表示是否发生异常都会执行的代码块,唯一不执行情况就是程序直接终止,前面有return也会先执行然后再返回
public class TiMu {
public static int method(){
int i=0;
try {
i++;
int a=10/0;
i++;
}catch (Exception e){
i++;
return i;//当return的时候,这个(i=2)的值会被暂时存储
}finally {
i++;
}
return i++;
}
}
新建Test类,在main方法中输出i
二.throw手动抛出异常:
方法里面筛选出某种情况,才手动抛出异常
public static int chu(int a,int b) throws Exception{//throws与throw不同
if ((b==0)){
throw new Exception("分母不能为0");//throw手动抛出异常,该方法必须要用throws声明异常
//必须方法上抛出异常,否则会报错
}
return a/b;
}