一般来说,Java异常处理有两种:
1.JVM默认的异常处理方式
2.开发中的异常处理方式
JVM默认的异常处理方式
定义:在控制台打印错误信息,并终止程序。(可能会造成数据丢失)
开发中的异常处理方式(两种)
try...catch(finally):捕获,自己处理
throws:抛出,交给调用者
示例:
1.JVM默认的异常处理方式
public static void main(String[] args) {
int a = 10/0;
System.out.println(a);
System.out.println("结束!");
}
运行结果:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at test.Tets01.main(Tets01.java:8)
2.1开发中的异常处理方式 try...catch(finally)
public static void main(String[] args) {
try{
int a = 10/0;
System.out.println(a);
}
catch(Exception e)
{
System.out.println("出现除以零的情况");
}
finally
{
System.out.println("哈哈哈哈");
}
System.out.println("结束!");
}
运行结果:
出现除以零的情况
哈哈哈哈
结束!
有无finally的区别:
public static void main(String[] args) {
try{
int a = 10/0;
System.out.println(a);
}
catch(Exception e)
{
System.out.println("出现除以零的情况");
return;//跳出当前,结束该方法。
}
finally
{
System.out.println("哈哈哈哈");
}
System.out.println("结束!");
}
运行结果:
出现除以零的情况
哈哈哈哈
2.2开发中的异常处理方式 throws
抛出异常交给调用者处理
两种抛出异常情况:
2.2.1调用者拿到异常,抛给上层
public static void main(String[] args) throws Exception{
show();
}
public static void show() throws Exception
{
int a = 10/0;
System.out.println(a);
}
运行结果:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at test.Test02.show(Test02.java:21)
at test.Test02.main(Test02.java:8)
2.2.2调用者自己处理
public static void main(String[] args){
try {
show();
} catch (Exception e) {
System.out.println("我在catch内。");
}
System.out.println("结束!");
}
public static void show() throws Exception
{
int a = 10/0;
System.out.println(a);
}
运行结果:
我在catch内。
结束!