zoukankan      html  css  js  c++  java
  • Java异常学习总结二

    异常的处理方式

    方式一:捕获异常(try-catch-finally)

    捕获异常是通过三个关键词来实现的:try-catch-finally。用try来执行一段程序,如果出现异常,系统抛出一个异常,可以通过它的类型来捕捉(catch)并处理它,最后一步是通过finally语句为异常处理提供一个统一的出口,finally指定的代码都要被执行(catch语句可以有多条;finally语句最多只能有一条,根据自己的需要可有可无)。

    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    
    /**
     * @author xiaofei 异常处理经典代码try-catch-finally
     */
    public class Exception {
    
    	public static void main(String[] args) {
    		FileReader reader = null;
    		try {
    			// 读取E盘下的a.txt文件
    			reader = new FileReader("e:/a.txt");
    			char c = (char) reader.read();
    			System.out.println(c);
    			// 多个catch,子类在前,父类在后
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {// 关闭资源
    			try {
    				if (reader != null) {// 避免空指针异常
    					reader.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}// main
    
    }  
    
    方式二:声明异常(throws子句)
    import java.io.FileReader;
    import java.io.IOException;
    
    /**
     * @author xiaofei 异常处理经典代码try-catch-finally
     */
    public class Exception {
    
    	public static void main(String[] args) throws IOException {
    		FileReader reader = null;
    
    		// 读取E盘下的a.txt文件
    		reader = new FileReader("e:/a.txt");
    		char c = (char) reader.read();
    		System.out.println(c);
    
    		// 关闭资源
    		if (reader != null) {// 避免空指针异常
    			reader.close();
    		}
    	}// main
    
    }  
    

    使用异常机制的建议

    • 要避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低下。
    • 处理异常不可以代替简单测试--只是在异常情况下使用异常机制。
    • 不要小粒度的异常处理--应该将整个任务包装在一个try语句块中。
    • 异常往往在高层处理。
  • 相关阅读:
    python学习笔记(十一)处理json
    python学习笔记(十)常用模块
    python学习笔记(九)内置函数
    python学习笔记(八)函数return多个值,列表推导式和交换两个变量的值
    BZOJ 3675 [Apio2014]序列分割 (斜率优化DP)
    BZOJ 3126 [USACO2013 Open]Photo (单调队列优化DP)
    POJ 1821 Fence (单调队列优化DP)
    BZOJ 3326 [SCOI2013]数数 (数位DP)
    HDU 6148 Valley Numer (数位DP)
    BZOJ 2741 L (可持久化01Trie+分块)
  • 原文地址:https://www.cnblogs.com/zxfei/p/10745086.html
Copyright © 2011-2022 走看看