异常Exception

Throwable
包含error 和Exception
Exception又分CheckedException异常和UncheckedException,
UncheckedException就是RuntimeException,可以避免的异常
CheckedException必须捕获

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 
exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

运行时异常比如数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常(NullPointerException)、类转换异常( ClassCastException);
普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。

  • 自己抛异常
<span style="font-family:Microsoft YaHei;font-size:14px;">public static void demo1() {
             int a = 6;
             int b = 0;
             try { // try监控区域
                   if (b == 0)
                         throw new ArithmeticException(); // 通过throw语句抛出异常
                  System. out.println( "a/b的值是:" + a / b);
            } catch (ArithmeticException e) { // catch捕捉异常
                  System. out.println( "程序出现异常,变量b不能为0。" );
            }
            System. out.println( "程序正常结束。" );

      }
</span>


  • 自动抛异常
<span style="font-family:Microsoft YaHei;font-size:14px;">public static void demo2 () {
             int a = 6;
             int b = 0;
             try {
                  System. out.println( "a/b的值是:" + a / b);
            } catch (ArithmeticException e) {
                  System. out.println( "程序出现异常,变量b不能为0。" );
            }
            System. out.println( "程序正常结束。" );
      }
</span>

一旦某个catch捕获到匹配的异常类型,将进入异常处理代码。一经处理结束,就意味着整个try-catch语句结束。其他的catch子句不再有匹配和捕获异常类型的机会

  • 自定义异常
<span style="font-family:Microsoft YaHei;font-size:14px;">public class MyException extends Exception {
      public MyException() {
             super();
      }

      public MyException(String msg) {
             super( msg);
      }
}
//调用
public static void execute(String a) throws MyException {
            System. out.println( "execute...");
             if ( "true".equals(a)) {
                   throw new MyException( "参数不能为 true" );
            }
      }

      public static void main(String[] args) throws MyException {
             execute("true");
      }
</span>

  • 抛异常 给上一层
<span style="font-family:Microsoft YaHei;font-size:14px;">public static void readFile(String file) throws FileNotFoundException {
             try {
                  BufferedInputStream in = new BufferedInputStream( new FileInputStream(file));
            } catch (FileNotFoundException e) {
                  e.printStackTrace();
                  System. err.println( "不知道如何处理该异常或者根本不想处理它,但是不做处理又不合适,这是重新抛出异常交给上一级处理" );
                   // 重新抛出异常
                   throw e;
            }
      }

      public static void printFile(String file) {
             try {
                   readFile(file);
            } catch (FileNotFoundException e) {
                  e.printStackTrace();
            }
      }
      public static void main(String[] args) throws MyException {
//          execute("true");
             printFile("D:/file");
      }
</span>

  • printStackTrace()、toString()、getMessage()


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值