创建异常类

尽管Java的内置异常处理了多数常见错误,但Java的异常处理机制并不限于处理这些错误.事实上,Java的异常处理机制还能够处理你创建的异常类型.通过使用自定义异常,可以处理与应用程序相关的错误.创建异常很容易,只需定义一个Exception(他是Throwable的子类)的子类即可.你的子类无须做任何实际的工作–正是他们在类型系统中的存在允许你将其作为异常使用.
Exception类不定义任何自己的方法,而是继承Throwable提供的那些方法.因此,Throwable定义的方法对于所有的异常,包括你自己创建的异常在内都有效.当然,可以创建的异常子类中重写这些方法的一个或多个.
下面的示例中创建了一个名为NonIntResultException的异常,该异常在两个整数相除的结果出现小数时产生.NonIntResultException包含保存整数值的两个域,一个构造函数和一个重写的toString()方法,该方法允许使用println()来显示对异常的描述.
public class test2
{
    // @param args
    public static void main(String args[])
    {
        try {
            throw new  NonIntResultException(1,2);
        }catch(NonIntResultException exc) {
            System.out.println(exc.toString());
        }
    }
}
class NonIntResultException extends Exception
{
    int n,d;
    
    NonIntResultException(int i,int j)
    {
        n=i;
        d=j;
    }
    
    public String toString()
    {
        return "Result of "+n+"/"+d+" is  non-integer";
    }
}
输出:
Result of 1/2 is non-integer
问:应该什么时候在程序中使用异常处理?什么时候创建自己的自定义异常类?
答:由于Java API大量使用异常来报告错误,因此几乎所有的实际程序都会使用异常处理.这是大多数Java新程序员都容易掌握的异常处理内容.何时及如何使用自定义异常比较难确定,通常,可以采用两种方式来报告错误:返回值和异常.二者孰优孰劣呢?简单的讲,在Java中异常处理更常用,虽然返回错误代码在某些情况下也是一种有效的方式,但是异常处理可以提供一种更强大的结构化方法来处理错误.专业的Java程序员大多采用异常的方法来处理代码中的错误.