Java 异常处理


    异常产生后,如果不做任何处理,程序就会被终止。Java的异常处理使程序不会因为一个异常而影响整个程序的执行。

Java捕获异常

    Java的异常捕获结构由try、catch和finally3部分组成。

     try
     {
         //代码段(可能发生异常的代码)
     }catch(异常类型1 ex)
     {
         //对异常处理的代码段    
     }catch(异常类型2 ex)
     {
         //对异常处理的代码段
     }catch(异常类型3 ex)
     {
         //对异常处理的代码段
     }
     . 
     .
     .catch(异常类型n ex)
     {
         //对异常处理的代码段
     }finally
     {
         //总要执行的代码段
     }

通常,异常处理常用一下3个函数来获取异常的有关信息:

  1.     getMessage()函数:输出错误性质
  2.     toString()函数:给出异常的类型与性质
  3.     printStackTrace()函数:指出异常的类型、性质、栈层次及出现在程序中的位置

以下4种情况下,finally块不会被执行

  1.     在finally语句块中发生异常
  2.     在前面的代码中使用System.exit()退出程序
  3.     程序所在的线程死亡
  4.     关闭cpu

Java常见异常

常见的异常类
异常类说明
ClassCastException类型转换异常
ClassNotFoundException未找到相应类异常
ArithmeticException算术异常
ArrayIndexOutOfBoundsException数组下标越界异常
ArrayStoreException数组中包含不兼容的值抛出的异常
NullPointerException空指针异常
NoSuchFieldException字段未找到异常
SQLException操作数据库异常
NoSuchMethodException方法未找到抛出的异常
NumberFormatException字符串转换为数字抛出的异常
NegativeArraySizeException数组元素个数为负数抛出的异常
StringIndexOutOfBoundsException字符串索引超出范围抛出的异常
IOException输入输出异常
IllegalAccessException不允许访问某类异常
InstantiationException当应用程序试图使用Class类中的newinstace()方法创建一个累的实例,而指定的类对象无法被实例化时,抛出该异常
EOFException文件已结束异常
FileNotFoundException文件未找到异常

自定义异常

     Java内置的异常类可以描述在编程时出现的大部分异常情况,除此之外,用户只需集成Exception类即可自定义异常。

    自定义异常的步骤:

  1.          创建自定义异常类。
  2.          在方法中通过throw关键字抛出异常对象
  3.          如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常。
  4.          再出现异常方法的调用者中捕获并处理异常。

代码示例:

 

public class MyException extends Exception{    //创建自定义异常,继承Exception类
         public MyException(String ErrorMessage)  {//构造方法
                  super(ErrorMessage);   //父类构造方法
         }
 }

public class Tran{
     //定义方法,抛出异常
     static int avg(int number1, int number2) throws MyException {
          if (number1<0 || number2<0) {         //判断方法中的参数是否满足指定条件
              throw new MyException("不可以使用负数");  //错误信息
          }
          if (number1>100 || number2>100) {
              throw new MyException("数值太大了");
          }
          return (number1 + number2)/2;
     }
    public static void main(String[] args){
           try{
                 int resullt = avg(102, 150);
                 System.out.println(resullt);
            } catch(MyException e){
                   System.out.println(e);
            }
 }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值