在Java中 如果某个方法抛出异常
1可以在当前方法中进行捕捉然后进行该异常的处理,
2亦可以将异常向上抛出,由方法调用者来处理。
异常产生后如果不进行任何的处理 那么就将在出现异常的位置终止 不再执行下面的语句。
异常的组成
捕获异常由 try catch 和 finally 3部分组成 try 中包含的代码是可能发生发生异常的Java语句
catch 是用来激发被捕获的异常 finally 无论之前try中的代码是否发生异常 都会进入到finally中
try{
}
Catch(Exception1 e){
}//捕获异常
Catch(Exception2 e){
}//捕获异常
finally{}
例子
try{
int age=Integer.parseInt("30L");
sop("No this code");
}
Catch(Exception e){
e.printStackTrace();
}
sop("this code ok");
}
try中发生异常后的代码没有被执行 catch和下面的代码可以正常执行
3 e是一类对象 可以进行3中常见的处理
getMessage();//输出错误的性质
toString();//给出异常的类型与性质
printStackTrace();//指出异常的类型 性质 栈层次 以及出现的位置
4自定义的异常
1 创建自定义的异常 继承Exception类
2 在方法中通过throw关键字抛出异常对象
3 如果在当前抛出异常的方法中处理异常 可以使用try catch 语句。
如果不想在抛出异常的地方处理异常 那么可以利用关键字Throws 来抛给方法的调用者 并进行下一步的操作
throws代表是给上级的调用者处理我的异常
package book;
public class Test {
// 让他继承我自己定义的异常类
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = avg(1,3);
}
static int avg(int num1, int num2) {
try{
if(num1==1){
throw new MyException("给的数字不好啊");
}
}
catch(MyException e) {
e.printStackTrace();
}
return 0;
}
}
如果是Error 或者是 RunTimeException或者他们的子类 可以不使用throws关键字来声明要抛出的异常 编译仍能够顺利通过 但是在运行时会被系统抛出