目录页:
异常概念
异常分类
Java异常处理机制
try...catch...finally
throw和throws
自定义异常
Java异常处理范例:
package 异常;
class Name{
String name;
}
public class Test {
public static void main(String[] args) {
Name N = null;
try
{
N.name="大帅比";
System.out.println("输出你的名字 "+N.name);
}
catch(java.lang.NullPointerException e)//捕捉异常类型可以直接用Exception可以捕获所有出错的异常类型
{
System.out.println("成功捕捉错误");
}
finally {//finally可有可无
System.out.println("无论什么异常 我都会执行!");
System.out.println("无论什么异常 我都会执行!");
System.out.println("无论什么异常 我都会执行!");
System.out.println("无论什么异常 我都会执行!");
}
}
}
输出结果:
成功捕捉错误
无论什么异常 我都会执行!
无论什么异常 我都会执行!
无论什么异常 我都会执行!
无论什么异常 我都会执行!
throws关键字范例:
package 异常;
class calculate
{
public void div (int x,int y) throws Exception
{
System.out.println("输出结果: " + x/y);
}
}
public class Throws {
public static void main(String[] args) {
calculate C = new calculate();
try
{
C.div(10, 2);
}
catch(Exception e)
{
e.printStackTrace();//找出异常所在
}
}
}
输出结果: 5
在主方法中继续抛出异常:
package 异常;
class calculate
{
public void div (int x,int y)
{
System.out.println("输出结果: " + x/y);
}
}
public class Throws {
public static void main(String[] args)throws Exception {
calculate C = new calculate();
C.div(10, 0);
}
}
输出:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at 异常.calculate.div(Throws.java:7)
at 异常.Throws.main(Throws.java:13)
注:本程序在主方法上使用throws抛出异常,这样程序代码出现异常时,由于主方法没有编写相应的异常处理语句,所以最终会交由JVM默认进行处理。在实际的项目开发中,主方法往往是作为程序的起点存在,所有的异常应该在主方法中全部处理完成,而不应该选择向上抛出。
Tips:
finally的作用往往是在开发中进行一些资源释放操作。
处理多个异常时,捕获范围小的异常要放在捕获范围大的异常之前处理。
考虑到代码的统一性,不管调用方法时是否会产生异常,都必须进行异常处理操作。