——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
java.lang.Exception类是Java中所有异常的直接或间接父类。即Exception类是所有异常的根类。
使用最简单的程序:
public class ExceptionTest{
public static void main(String[] args)
{
int c = 1 / 0;
System.out.println(c);
}
}
编译通过,运行时则报出了异常,因为除数不能为0。
处理异常一般使用:
try
{
// 可能发生异常的代码
// 如果发生了异常,那么异常之后的代码都不会被执行
}
catch (Exception e)
{
// 异常处理代码
}
finally
{
// 不管有没有发生异常,finally语句块都会被执行
}
我们使用这种处理方式来处理一下除数为0的运算代码。
public class ExceptionTest
{
public static void main(String[] args)
{
int c = 0;
try
{
// 这块代码出现了异常
c = 1 / 0;
// 那么异常之后的代码都不会被执行
System.out.println("这段代码执行了");
}
catch (ArithmeticException e)
{
System.out.println("出现异常了");
e.printStackTrace();
}
finally
{
//不管有没有发生异常,finally语句块都会被执行
System.out.println("finally代码块");
}
System.out.println(c);
// 当b为0时,有异常,输出为c的初始值0
}
}
还有种方式是继续向外抛出异常:
public class ExceptionTest{
public static void main(String[] args) throws Exception
{
int c = 1 / 0;
System.out.println(c);
}
}
将除数为0的这个算术异常继续向外抛出。
知道了如何处理异常,那我们就来自定义一个异常。
所谓自定义异常,通常就是定义一个类,去继承Exception类或者它的子类。因为异常必须直接或者间接地继承自Exception类。通常情况下,会直接继承自Exception类,一般不会继承某个运行时的异常类。
public class MyException extends Exception
{
public MyException()
{
super();
}
public MyException(String message)
{
super(message);
}
}
在main函数中抛出我们自定义的异常。
public class ExceptionTest
{
public static void main(String[] args) throws MyException
{
System.out.println("异常将要抛出");
throw new MyException("我自定义的异常");
System.out.println("异常抛出完成");
}
}
运行成功抛出异常。