异常
-
异常体系:Error和Exception
Error:指JVM出现不可恢复的错误,程序员处理不了。
Exception:指程序中因操作不当,出现的非正常情况,必须要处理。
2.处理异常分为处理单个异常与处理多个异常:
处理单个异常:用try{}catch(){}语句
举例:try {
int c=10/0;
} catch (Exception e) {
System.out.println(e.getMessage());
}
处理多个异常:用try{}catch(){}catch(){}…
举例:try { int c=10/0; int[] n=new int [1]; d=n[1]; } catch (Exception e) { System.out.println(e.getMessage()); } catch (Exception e) { System.out.println(e.getMessage()); }
无论处理单个异常还是多个异常其实当try的代码块中发现异常时其实时new了该异常类型的对象,并将该异常对象传给对应类型的catch,catch将其捕获并反馈给程序员。
3.finally关键字
finally与try{}或与try{}catch(){}…连用
作用:释放资源
finally中的语句一定会执行,除非代码用System.exit(0);结束程序
举例:
try {
int c=10/0;
} catch (Exception e) {
System.out.println(e.getMessage());
}finally{
System.out.println("此代码一定会执行");
}
4.throw
throw在方法内部抛出一个异常,将异常抛给它的调用者。
一般在一个方法内部出现异常不知道要写什么的时候就用throw。
throw和return类似执行完后都会结束方法。
举例:
public class throw {
public static void main(String[] args) {
try {
int c = dowork1(10, 0);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
public static int dowork1 ( int i, int j){
if (j == 0) {
throw new ArithmeticException("除数不为0");//此时将异常对象返回,参数中写上原因,不写则什么都不会有
}
int c = i / j;
return c;
}
}
5.throws
使用throws在方法声明上抛出异常,当一个方法自身不处理异常,而是要把异常交给调用者处理此时就要用throws将异常抛出,只需在方法声明最后加上throws 异常类型。
举例 :
public class throws {
public static void main(String[] args) throws Exception {
int c = dowork1(10, 0);
}
}
public static int dowork1 ( int i, int j){
if (j == 0) {
throw new ArithmeticException("除数不为0");//此时将异常对象返回,参数中写上原因,不写则什么都不会有
}
int c = i / j;
return c;
}
}
//该例子将异常抛给了JVM
6.补充:以上例子中的Exception可以具体到哪种异常,若处理多异常时Exception一定要写在最后一个catch的参数中,若写在前边则无论哪种异常都会被捕获。
本次内容比较少,因为想下次把线程的东西写在一起。