zoukankan      html  css  js  c++  java
  • 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
    *///:~
  • 相关阅读:
    ↗☻【高性能网站建设进阶指南 #BOOK#】第3章 拆分初始化负载
    ↗☻【高性能网站建设进阶指南 #BOOK#】第7章 编写高效的JavaScript
    【JavaScript】text
    ↗☻【高性能网站建设进阶指南 #BOOK#】第5章 整合异步脚本
    ↗☻【高性能网站建设进阶指南 #BOOK#】第10章 图像优化
    利用十大最佳游戏开发工具开发游戏
    传奇服务器端/客户端 完整源代码
    order by union 应用实例 mssql
    Nine Digits Expression
    Ninedigit Fractions
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10303293.html
Copyright © 2011-2022 走看看