• java 把被检查的异常转换为不检查的异常


    一.当我们不知道该怎么处理这个异常,但是也不想把它"吞"了,或者打印一些无用的信息,可以使用异常链的思路解决.可以直接报"被检查的异常"包装进RuntimeException里面,就像这样:

    try{
       //... to do something useful
    } catch(IDontKnowWhatToDoWithThisCheckedException e){
     throw new RuntimeException(e);
    }

      这种技巧给了你一种选择,你可以不写try-catch子句或异常说明,直接忽略异常,让它自己沿着调用栈往上冒泡.同时还可以用getCause()捕获并处理特定异常,就像这样

    package exceptions;
    //: exceptions/TurnOffChecking.java
    // "Turning off" Checked exceptions.
    import java.io.*;
    import static net.mindview.util.Print.*;
    
    class WrapCheckedException {
      void throwRuntimeException(int type) {
        try {
          switch(type) {
            case 0: throw new FileNotFoundException();
            case 1: throw new IOException();
            case 2: throw new RuntimeException("Where am I?");
            default: return;
          }
        } catch(Exception e) { // Adapt to unchecked:
          throw new RuntimeException(e);
        }
      }
    }
    
    class SomeOtherException extends Exception {}
    
    public class TurnOffChecking {
      public static void main(String[] args) {
        WrapCheckedException wce = new WrapCheckedException();
        // You can call throwRuntimeException() without a try
        // block, and let RuntimeExceptions leave the method:
        wce.throwRuntimeException(3);
        // Or you can choose to catch exceptions:
        for(int i = 0; i < 4; i++)
          try {
            if(i < 3)
              wce.throwRuntimeException(i);
            else
              throw new SomeOtherException();
          } catch(SomeOtherException e) {
              print("SomeOtherException: " + e);
          } catch(RuntimeException re) {
            try {
              throw re.getCause();
            } catch(FileNotFoundException e) {
              print("FileNotFoundException: " + e);
            } catch(IOException e) {
              print("IOException: " + e);
            } catch(Throwable e) {
              print("Throwable: " + e);
            }
          }
      }
    } /* Output:
    FileNotFoundException: java.io.FileNotFoundException
    IOException: java.io.IOException
    Throwable: java.lang.RuntimeException: Where am I?
    SomeOtherException: SomeOtherException
    *///:~
  • 相关阅读:
    flask总结02
    flask总结01
    恩智浦Freescale Cortex-A9 迅为IMX6开发板平台初体验
    [分享] IMX6嵌入式开发板linux QT挂载U盘及TF卡
    迅为4412嵌入式安卓开发板兼容3G网络|4G网络
    迅为嵌入式4412平台兼容3G/4G模块的安卓开发板
    飞思卡尔开发板-迅为IMX6开兼容单核 双核 四核Plus开发板
    物联网初学者智能家居必备迅为iTOP-4412开发板
    【分享】4412开发板POP烧写ubuntu出错,如何挂载emmc分区解决方法
    [安卓开发板]迅为IMX6 四核Android开发板
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10303293.html
Copyright © 2020-2023  润新知