java异常处理

简介

所有的异常类是从 java.lang.Exception 类继承的子类。 Exception类是Throwable类的子类,Throwable还有一个子类Error。

java内置异常类

Java 语言定义了一些异常类在 java.lang 标准包中。标准运行时异常类的子类是最常见的异常类。由于 java.lang 包是默认加载到所有的 Java 程序的,所以大部分从运行时异常类继承而来的异常都可以直接使用。

  • ClassNotFoundException:应用程序试图加载类时,找不到相应的类,抛出该异常。
  • CloneNotSupportedException:当调用 Object 类中的 clone 方法克隆对象,但该对象的类无法实现 Cloneable 接口时,抛出该异常。
  • IllegalAccessException:拒绝访问一个类的时候,抛出该异常。
  • InstantiationException 当试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象因为是一个接口或是一个抽象类而无法实例化时,抛出该异常。
  • InterruptedException:一个线程被另一个线程中断,抛出该异常。
  • NoSuchFieldException:请求的变量不存在
  • NoSuchMethodException:请求的方法不存在

Java 根据各个类库也定义了一些其他的异常,这里不一一列出。

异常方法

下面的列表是 Throwable 类的主要方法:

  • public String getMessage() :返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了。
  • public Throwable getCause() :返回一个Throwable 对象代表异常原因。
  • public String toString() :使用getMessage()的结果返回类的串级名字。
  • public void printStackTrace(): 打印toString()结果和栈层次到System.err,即错误输出流。
  • public StackTraceElement [] getStackTrace(): 返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。
  • public Throwable fillInStackTrace(): 用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中。

捕获异常

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}

多重捕获块

try{
   // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}

throws 关键字:

定义一个方法的时候可以使用throws关键字声明。使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理。

throws关键字格式:  
public 返回值类型 方法名称(参数列表,,,)throws 异常类{};

假设定义一个除法,对于除法操作可能出现异常,可能不会。所以对于这种方法最好将它使用throws关键字声明,一旦出现异常,则应该交给调用处处理。

class Math{
    public int div(int i,int j) throws Exception{    // 定义除法操作,如果有异常,则交给被调用处处理
        int temp = i / j ;    // 计算,但是此处有可能出现异常
        return temp ;
    }
};
public class ThrowsDemo01{
    public static void main(String args[]){
        Math m = new Math() ;        // 实例化Math类对象
        try{
            System.out.println("除法操作:" + m.div(10,2)) ;
        }catch(Exception e){
            e.printStackTrace() ;    // 打印异常
        }
    }
};

因为div使用了throws关键字声明,所以调用此方法的时候,方法必须进行异常处理。通过try…catch;

  • 如果在主方法使用了throws关键字,则表示一切异常交给JVM进行处理。默认处理方式也是JVM完成。

throw关键字

throw关机字作用是抛出一个异常,抛出的时候是抛出的是一个异常类的实例化对象,在异常处理中,try语句要捕获的是一个异常对象,那么此异常对象也可以自己抛出。

package methoud;
public class ThisDemo06{
    public static void main(String args[]){
        try{
            throw new Exception("自己抛着玩的。") ;    // 抛出异常的实例化对象
        }catch(Exception e){
            System.out.println(e) ;
        }
    }
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值