捕获异常可以让即是程序出现错误也不会终止运行,还可以处理异常.
一、异常处理框架.
二、异常处理的5个关键词.
1.try 尝试,
2.catch 捕获异常.
3.finally :无论是否异常都会执行.
4.throw :用于方法中抛出异常,
5.throws: 用于方法修饰,抛出异常.
三、实例
1.try catch finally 组合使用.
package opp.Exception异常;
public class Demo {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {
System.out.println(a/b);
} catch (ArithmeticException e) {
System.out.println("a/b 出现异常ArithmeticException捕获成功!");
e.printStackTrace();
}finally {
System.out.println("finally run successfully.经常用于一些异常的处理和流的关闭.");
}
}
}
输出
a/b 出现异常捕获成功!
finally run successfully.经常用于一些异常的处理和流的关闭.
java.lang.ArithmeticException: / by zero
at opp.Exception异常.Demo.main(Demo.java:8)
try 后面为需要捕捉异常的代码块
catch()中为需要捕获的异常类型
catch(){// 。。。} 花括号中为捕获异常成功后的执行语句
finally{} 中为无论如何都会执行的finally语句通常用于关闭流(IO 资源等.)
2.多重catch语句例子
package opp.Exception异常;
public class Demo2多重catch {
public static void main(String[] args) {
try {
new Demo2多重catch().a();
} catch (Error e) {
System.out.println("第一个catch捕获Error成功");
}catch (Exception e){
System.out.println("第二个catch捕获Exception成功");
}catch (Throwable e){
System.out.println("第三个catch捕获最大的异常类Throwable 成功");
}finally {
System.out.println("finally 语句运行成功");
}
}
public void a(){
b();
}
public void b(){
a();
}
}
输出结果
第一个catch捕获Error成功
finally 语句运行成功
结论:
1.捕获的类型比较大的放到后面.
2…
===============================
3. 实例:throw,在方法中主动抛出异常.
package opp.Exception异常;
public class Throw方法中主动抛出异常 {
public static void main(String[] args) {
new Throw方法中主动抛出异常().devide(1,0);
}
private void devide(int a ,int b){
if(b == 0){
System.out.println("抛出异常成功!");
throw new ArithmeticException();//抛出数据数据异常.
}
}
}
输出结果:
抛出异常成功!
Exception in thread "main" java.lang.ArithmeticException
at opp.Exception异常.Throw方法中主动抛出异常.devide(Throw方法中主动抛出异常.java:10)
at opp.Exception异常.Throw方法中主动抛出异常.main(Throw方法中主动抛出异常.java:5)
4. throws == try+catch?
处理异常有 抛出throws 和捕获try ,catch.
抛出经常用于方法中,把异常抛到上一级,让调用这个方法的位置来try catch.