1、Java中异常的分类:
(1)Checked Exception(非 Runtime Exception)
(2)Unchecked Exception(Runtime Exception)
2、Java中所有的异常都直接或间接的继承自Exception。
3、一旦发生异常,程序就会停止,不再执行。
4、RuntimeException也是直接继承自Exception,叫做运行时异常,Java中所有运行时异常都直接或间接继承自RuntimeException。
5、java中凡是继承自Exception而不是RuntimeException的类都是非运行时异常。
6、异常一般的处理流程
try
{
//可能会发生异常的代码
}
catch(Exception e)
{
}
finally
{
}
无论程序是否会抛出异常,finally都会被执行。
7、不过try后面有多少个catch,只有一个catch会被执行。
8、对于非运行时异常(Checked Exception),必须对其进行处理,处理方法有两种:一种是使用try...catch...finally进行捕获,第二种是在调用该会产生异常的方法的方法声明throws Exception。(在main方法中继续抛异常,最终会由JVM来处理异常)
9、对于欲行时异常(Unchecked Exception),可以对其处理,也可以不对其处理。推荐不对其处理。
异常使用的一个例子:
package com.sailang.java;
public class ExceptionTest1
{
public void method() throws Exception
{
System.out.println("Welcome");
throw new Exception();
}
public static void main(String[] args)
{
ExceptionTest1 ex = new ExceptionTest1();
try
{
ex.method();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
10、NullPointException是空指针异常,出现该异常的原因在于某个引用为null,但你确调用了它的某个方法,这是就会出现异常。这个异常出现的概率很大!
package com.sailang.java;
public class ExceptionTest2
{
public static void main(String[] args)
{
String str = null;
System.out.println(str.length());
}
}
11、所谓自定义异常类就是继承自Exception类的一个子类。通常情况下,我们都会直接继承自Exception类,而一般不会继承自某个运行时的异常类。
自定义异常很简单,可以仿照JDK中的异常来写。
自定义异常类:
package com.sailang.java;
public class MyException extends Exception
{
public MyException()
{
super();
}
/**
*
* @param message 用于显示异常信息
*/
public MyException(String message)
{
super(message);
}
}
使用异常类:
package com.sailang.java;
public class ExceptionTest3
{
public void method(String str) throws MyException
{
if(str == null)
{
throw new MyException("传入参数不能为空");
}
else
{
System.out.println(str);
}
}
public static void main(String[] args)
{
try
{
ExceptionTest3 ex = new ExceptionTest3();
ex.method("lizhongyi");
}
catch(MyException e)
{
e.printStackTrace();
}
finally
{
System.out.println("异常处理完毕");
}
System.out.println("程序执行完毕");
}
}